jekyll-theme-centos 0.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 (304) hide show
  1. checksums.yaml +7 -0
  2. data/_config.yml +196 -0
  3. data/_data/base/announcement_schema.yml +49 -0
  4. data/_data/base/artwork_schema.yml +46 -0
  5. data/_data/base/backtotop_schema.yml +59 -0
  6. data/_data/base/bits.yml +96 -0
  7. data/_data/base/bits_schema.yml +185 -0
  8. data/_data/base/breadcrumb_schema.yml +27 -0
  9. data/_data/base/breakingnews_schema.yml +67 -0
  10. data/_data/base/card_schema.yml +146 -0
  11. data/_data/base/color.yml +1042 -0
  12. data/_data/base/color_schema.yml +1036 -0
  13. data/_data/base/configuration_variables_schema.yml +42 -0
  14. data/_data/base/content.yml +2 -0
  15. data/_data/base/content_schema.yml +26 -0
  16. data/_data/base/copyright.yml +12 -0
  17. data/_data/base/copyright_schema.yml +74 -0
  18. data/_data/base/copyvalue_schema.yml +49 -0
  19. data/_data/base/datatable_schema.yml +57 -0
  20. data/_data/base/event_schema.yml +130 -0
  21. data/_data/base/fontawesome_schema.yml +62 -0
  22. data/_data/base/footer.yml +9 -0
  23. data/_data/base/footer_schema.yml +55 -0
  24. data/_data/base/head_schema.yml +19 -0
  25. data/_data/base/heading_anchor.yml +2 -0
  26. data/_data/base/heading_anchor_schema.yml +37 -0
  27. data/_data/base/highlight_schema.yml +98 -0
  28. data/_data/base/image_schema.yml +34 -0
  29. data/_data/base/languages.yml +186 -0
  30. data/_data/base/link_schema.yml +187 -0
  31. data/_data/base/locales_schema.yml +158 -0
  32. data/_data/base/navbar.yml +20 -0
  33. data/_data/base/navbar_schema.yml +129 -0
  34. data/_data/base/navindex_schema.yml +67 -0
  35. data/_data/base/ogp.yml +24 -0
  36. data/_data/base/ogp_schema.yml +192 -0
  37. data/_data/base/project.yml +37 -0
  38. data/_data/base/project_schema.yml +124 -0
  39. data/_data/base/script_schema.yml +41 -0
  40. data/_data/base/shortcut_schema.yml +74 -0
  41. data/_data/base/social.yml +26 -0
  42. data/_data/base/social_schema.yml +57 -0
  43. data/_data/base/sponsors.yml +41 -0
  44. data/_data/base/sponsors_schema.yml +73 -0
  45. data/_data/base/title_schema.yml +49 -0
  46. data/_data/base/toc_schema.yml +114 -0
  47. data/_data/download/cards.yml +309 -0
  48. data/_data/download/navbar.yml +11 -0
  49. data/_includes/base/announcement.html.liquid +65 -0
  50. data/_includes/base/artwork.html.liquid +63 -0
  51. data/_includes/base/backtotop.html.liquid +73 -0
  52. data/_includes/base/bits.html.liquid +152 -0
  53. data/_includes/base/breadcrumb.html.liquid +77 -0
  54. data/_includes/base/breakingnews.html.liquid +90 -0
  55. data/_includes/base/card.html.liquid +110 -0
  56. data/_includes/base/color-table.html.liquid +33 -0
  57. data/_includes/base/configuration_variables-nested.html.liquid +98 -0
  58. data/_includes/base/configuration_variables.html.liquid +98 -0
  59. data/_includes/base/content.html.liquid +7 -0
  60. data/_includes/base/copyright.html.liquid +70 -0
  61. data/_includes/base/copyvalue.html.liquid +82 -0
  62. data/_includes/base/datatable.html.liquid +83 -0
  63. data/_includes/base/event.html.liquid +105 -0
  64. data/_includes/base/fontawesome.html.liquid +91 -0
  65. data/_includes/base/footer.html.liquid +69 -0
  66. data/_includes/base/head.html.liquid +135 -0
  67. data/_includes/base/heading_anchor.html.liquid +67 -0
  68. data/_includes/base/highlight.html.liquid +84 -0
  69. data/_includes/base/image.html.liquid +42 -0
  70. data/_includes/base/link.html.liquid +129 -0
  71. data/_includes/base/locales.html.liquid +78 -0
  72. data/_includes/base/navbar.html.liquid +121 -0
  73. data/_includes/base/navindex.html.liquid +200 -0
  74. data/_includes/base/ogp.html.liquid +144 -0
  75. data/_includes/base/project.html.liquid +104 -0
  76. data/_includes/base/shortcut.html.liquid +77 -0
  77. data/_includes/base/social.html.liquid +76 -0
  78. data/_includes/base/sponsors-cards.html.liquid +69 -0
  79. data/_includes/base/sponsors-carousel.html.liquid +91 -0
  80. data/_includes/base/title.html.liquid +65 -0
  81. data/_includes/base/toc-generator.html.liquid +189 -0
  82. data/_includes/base/toc.html.liquid +95 -0
  83. data/_includes/download/cards-body-commands.html +7 -0
  84. data/_includes/download/cards-body-convert.html +10 -0
  85. data/_includes/download/cards-body-doc.html +9 -0
  86. data/_includes/download/cards-body-documentation.html +11 -0
  87. data/_includes/download/cards-body-eol.html +16 -0
  88. data/_includes/download/cards-body-mirrors.html +8 -0
  89. data/_includes/download/cards-body-screenshot.html +26 -0
  90. data/_includes/download/cards-body-screenshots.html +32 -0
  91. data/_includes/download/cards-body.html +8 -0
  92. data/_includes/download/cards-footer.html +3 -0
  93. data/_includes/download/cards-header-commands.html +8 -0
  94. data/_includes/download/cards-header-convert.html +8 -0
  95. data/_includes/download/cards-header-doc.html +8 -0
  96. data/_includes/download/cards-header-documentation.html +8 -0
  97. data/_includes/download/cards-header-eol.html +8 -0
  98. data/_includes/download/cards-header-mirrors.html +13 -0
  99. data/_includes/download/cards-header-screenshot.html +8 -0
  100. data/_includes/download/cards-header-screenshots.html +8 -0
  101. data/_includes/download/cards-header.html +13 -0
  102. data/_includes/download/cards.html +120 -0
  103. data/_layouts/base/default.html +68 -0
  104. data/_layouts/download/cards.html +7 -0
  105. data/_layouts/download/default.html +7 -0
  106. data/_layouts/people/default.html +68 -0
  107. data/_sass/base/_customization.scss +331 -0
  108. data/_sass/base/_light-dark.scss +10 -0
  109. data/_sass/base/_maps.scss +104 -0
  110. data/_sass/base/_variables.scss +232 -0
  111. data/_sass/bootstrap/_accordion.scss +153 -0
  112. data/_sass/bootstrap/_alert.scss +68 -0
  113. data/_sass/bootstrap/_badge.scss +38 -0
  114. data/_sass/bootstrap/_breadcrumb.scss +40 -0
  115. data/_sass/bootstrap/_button-group.scss +147 -0
  116. data/_sass/bootstrap/_buttons.scss +216 -0
  117. data/_sass/bootstrap/_card.scss +238 -0
  118. data/_sass/bootstrap/_carousel.scss +226 -0
  119. data/_sass/bootstrap/_close.scss +66 -0
  120. data/_sass/bootstrap/_containers.scss +41 -0
  121. data/_sass/bootstrap/_dropdown.scss +250 -0
  122. data/_sass/bootstrap/_forms.scss +9 -0
  123. data/_sass/bootstrap/_functions.scss +302 -0
  124. data/_sass/bootstrap/_grid.scss +39 -0
  125. data/_sass/bootstrap/_helpers.scss +12 -0
  126. data/_sass/bootstrap/_images.scss +42 -0
  127. data/_sass/bootstrap/_list-group.scss +199 -0
  128. data/_sass/bootstrap/_maps.scss +174 -0
  129. data/_sass/bootstrap/_mixins.scss +42 -0
  130. data/_sass/bootstrap/_modal.scss +240 -0
  131. data/_sass/bootstrap/_nav.scss +197 -0
  132. data/_sass/bootstrap/_navbar.scss +289 -0
  133. data/_sass/bootstrap/_offcanvas.scss +147 -0
  134. data/_sass/bootstrap/_pagination.scss +109 -0
  135. data/_sass/bootstrap/_placeholders.scss +51 -0
  136. data/_sass/bootstrap/_popover.scss +196 -0
  137. data/_sass/bootstrap/_progress.scss +68 -0
  138. data/_sass/bootstrap/_reboot.scss +617 -0
  139. data/_sass/bootstrap/_root.scss +187 -0
  140. data/_sass/bootstrap/_spinners.scss +86 -0
  141. data/_sass/bootstrap/_tables.scss +171 -0
  142. data/_sass/bootstrap/_toasts.scss +73 -0
  143. data/_sass/bootstrap/_tooltip.scss +119 -0
  144. data/_sass/bootstrap/_transitions.scss +27 -0
  145. data/_sass/bootstrap/_type.scss +106 -0
  146. data/_sass/bootstrap/_utilities.scss +806 -0
  147. data/_sass/bootstrap/_variables-dark.scss +102 -0
  148. data/_sass/bootstrap/_variables.scss +1753 -0
  149. data/_sass/bootstrap/bootstrap-grid.scss +62 -0
  150. data/_sass/bootstrap/bootstrap-reboot.scss +10 -0
  151. data/_sass/bootstrap/bootstrap-utilities.scss +19 -0
  152. data/_sass/bootstrap/bootstrap.scss +52 -0
  153. data/_sass/bootstrap/forms/_floating-labels.scss +97 -0
  154. data/_sass/bootstrap/forms/_form-check.scss +189 -0
  155. data/_sass/bootstrap/forms/_form-control.scss +214 -0
  156. data/_sass/bootstrap/forms/_form-range.scss +91 -0
  157. data/_sass/bootstrap/forms/_form-select.scss +80 -0
  158. data/_sass/bootstrap/forms/_form-text.scss +11 -0
  159. data/_sass/bootstrap/forms/_input-group.scss +132 -0
  160. data/_sass/bootstrap/forms/_labels.scss +36 -0
  161. data/_sass/bootstrap/forms/_validation.scss +12 -0
  162. data/_sass/bootstrap/helpers/_clearfix.scss +3 -0
  163. data/_sass/bootstrap/helpers/_color-bg.scss +7 -0
  164. data/_sass/bootstrap/helpers/_colored-links.scss +30 -0
  165. data/_sass/bootstrap/helpers/_focus-ring.scss +5 -0
  166. data/_sass/bootstrap/helpers/_icon-link.scss +25 -0
  167. data/_sass/bootstrap/helpers/_position.scss +36 -0
  168. data/_sass/bootstrap/helpers/_ratio.scss +26 -0
  169. data/_sass/bootstrap/helpers/_stacks.scss +15 -0
  170. data/_sass/bootstrap/helpers/_stretched-link.scss +15 -0
  171. data/_sass/bootstrap/helpers/_text-truncation.scss +7 -0
  172. data/_sass/bootstrap/helpers/_visually-hidden.scss +8 -0
  173. data/_sass/bootstrap/helpers/_vr.scss +8 -0
  174. data/_sass/bootstrap/mixins/_alert.scss +18 -0
  175. data/_sass/bootstrap/mixins/_backdrop.scss +14 -0
  176. data/_sass/bootstrap/mixins/_banner.scss +7 -0
  177. data/_sass/bootstrap/mixins/_border-radius.scss +78 -0
  178. data/_sass/bootstrap/mixins/_box-shadow.scss +24 -0
  179. data/_sass/bootstrap/mixins/_breakpoints.scss +127 -0
  180. data/_sass/bootstrap/mixins/_buttons.scss +70 -0
  181. data/_sass/bootstrap/mixins/_caret.scss +69 -0
  182. data/_sass/bootstrap/mixins/_clearfix.scss +9 -0
  183. data/_sass/bootstrap/mixins/_color-mode.scss +21 -0
  184. data/_sass/bootstrap/mixins/_color-scheme.scss +7 -0
  185. data/_sass/bootstrap/mixins/_container.scss +11 -0
  186. data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
  187. data/_sass/bootstrap/mixins/_forms.scss +163 -0
  188. data/_sass/bootstrap/mixins/_gradients.scss +47 -0
  189. data/_sass/bootstrap/mixins/_grid.scss +151 -0
  190. data/_sass/bootstrap/mixins/_image.scss +16 -0
  191. data/_sass/bootstrap/mixins/_list-group.scss +26 -0
  192. data/_sass/bootstrap/mixins/_lists.scss +7 -0
  193. data/_sass/bootstrap/mixins/_pagination.scss +10 -0
  194. data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
  195. data/_sass/bootstrap/mixins/_resize.scss +6 -0
  196. data/_sass/bootstrap/mixins/_table-variants.scss +24 -0
  197. data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
  198. data/_sass/bootstrap/mixins/_transition.scss +26 -0
  199. data/_sass/bootstrap/mixins/_utilities.scss +97 -0
  200. data/_sass/bootstrap/mixins/_visually-hidden.scss +38 -0
  201. data/_sass/bootstrap/utilities/_api.scss +47 -0
  202. data/_sass/bootstrap/vendor/_rfs.scss +348 -0
  203. data/assets/css/base/stylesheet.min.scss +35 -0
  204. data/assets/icons/android-chrome-192.png +0 -0
  205. data/assets/icons/android-chrome-512.png +0 -0
  206. data/assets/icons/apple-touch-icon.png +0 -0
  207. data/assets/icons/favicon-16.png +0 -0
  208. data/assets/icons/favicon-32.png +0 -0
  209. data/assets/icons/favicon.ico +0 -0
  210. data/assets/icons/favicon.svg +1 -0
  211. data/assets/img/anaconda-symbolic.svg +1 -0
  212. data/assets/img/anaconda.svg +1 -0
  213. data/assets/img/base/centos-colors.gpl +55 -0
  214. data/assets/img/base/example-ogp-image.svg +297 -0
  215. data/assets/img/base/example-sponsors-design.svg +226 -0
  216. data/assets/img/base/example-sponsors-logo-1.svg +120 -0
  217. data/assets/img/base/example-sponsors-logo-2.svg +116 -0
  218. data/assets/img/base/example-sponsors-logo-3.svg +123 -0
  219. data/assets/img/base/example-sponsors-logo-4.svg +116 -0
  220. data/assets/img/base/example-sponsors-logo-5.svg +116 -0
  221. data/assets/img/base/example-sponsors-logo-6.svg +116 -0
  222. data/assets/img/base/example-sponsors-logo-7.svg +116 -0
  223. data/assets/img/base/example-sponsors-logo-8.svg +110 -0
  224. data/assets/img/base/page-layout-default.svg +1217 -0
  225. data/assets/img/base/page-with-alert.svg +383 -0
  226. data/assets/img/base/page-with-announcement.svg +956 -0
  227. data/assets/img/base/page-with-artwork.svg +1009 -0
  228. data/assets/img/base/page-with-backtotop.svg +1009 -0
  229. data/assets/img/base/page-with-bits.svg +891 -0
  230. data/assets/img/base/page-with-breadcrumb.svg +676 -0
  231. data/assets/img/base/page-with-breakingnews.svg +957 -0
  232. data/assets/img/base/page-with-color.svg +57 -0
  233. data/assets/img/base/page-with-copyright.svg +1018 -0
  234. data/assets/img/base/page-with-copyvalue.svg +57 -0
  235. data/assets/img/base/page-with-datatable.svg +857 -0
  236. data/assets/img/base/page-with-event.svg +518 -0
  237. data/assets/img/base/page-with-fontawesome.svg +147 -0
  238. data/assets/img/base/page-with-footer.svg +1018 -0
  239. data/assets/img/base/page-with-heading.svg +57 -0
  240. data/assets/img/base/page-with-highlight.svg +86 -0
  241. data/assets/img/base/page-with-image.svg +57 -0
  242. data/assets/img/base/page-with-link.svg +57 -0
  243. data/assets/img/base/page-with-locales.svg +1009 -0
  244. data/assets/img/base/page-with-navbar.svg +958 -0
  245. data/assets/img/base/page-with-navindex.svg +279 -0
  246. data/assets/img/base/page-with-ogp.svg +401 -0
  247. data/assets/img/base/page-with-project.svg +423 -0
  248. data/assets/img/base/page-with-shortcut.svg +937 -0
  249. data/assets/img/base/page-with-social.svg +937 -0
  250. data/assets/img/base/page-with-sponsors.svg +937 -0
  251. data/assets/img/base/page-with-title.svg +584 -0
  252. data/assets/img/base/page-with-toc.svg +399 -0
  253. data/assets/img/base/screenshot-1200x600.svg +114 -0
  254. data/assets/img/centos-dynamicmsg-logo.svg +1 -0
  255. data/assets/img/centos-dynamicmsg-type.svg +1 -0
  256. data/assets/img/centos-dynamicmsg-whitelogo.svg +1 -0
  257. data/assets/img/centos-dynamicmsg-whitetype.svg +1 -0
  258. data/assets/img/centos-gdm-whitelogo.svg +1 -0
  259. data/assets/img/centos-ipa-whiteheader.svg +1 -0
  260. data/assets/img/centos-logo-2bits.svg +1 -0
  261. data/assets/img/centos-logo.svg +1 -0
  262. data/assets/img/centos-message-logo.svg +1 -0
  263. data/assets/img/centos-motif.png +0 -0
  264. data/assets/img/centos-poweredby-logo.svg +1 -0
  265. data/assets/img/centos-social-share.png +0 -0
  266. data/assets/img/centos-symbol-2bits.svg +1 -0
  267. data/assets/img/centos-symbol.svg +1 -0
  268. data/assets/img/centos-type.svg +1 -0
  269. data/assets/img/centos-vertical-logo.svg +1 -0
  270. data/assets/img/centos-vertical-message-logo.svg +1 -0
  271. data/assets/img/centos-whitelogo.svg +1 -0
  272. data/assets/img/download/centos-linux-7-2009-screenshot-n.png +0 -0
  273. data/assets/img/download/centos-stream-8-screenshot-n.png +0 -0
  274. data/assets/img/download/centos-stream-9-screenshot-n.png +0 -0
  275. data/assets/img/download/distribution-release-screenshot-1.png +0 -0
  276. data/assets/img/download/distribution-release-screenshot-2.png +0 -0
  277. data/assets/img/download/distribution-release-screenshot-3.png +0 -0
  278. data/assets/img/download/distribution-release-screenshot-n.png +0 -0
  279. data/assets/img/download/distribution-release-screenshot-n.svg +134 -0
  280. data/assets/img/download/download.svg +421 -0
  281. data/assets/img/download/fig-the-downloads-cards-presentation-template.png +0 -0
  282. data/assets/img/people/page.svg +900 -0
  283. data/assets/img/people/page.webp +0 -0
  284. data/assets/img/people/username.webp +0 -0
  285. data/assets/js/base/backtotop.js +20 -0
  286. data/assets/js/base/copyvalue.js +145 -0
  287. data/assets/js/base/datatable.js +41 -0
  288. data/assets/js/base/heading-anchor.js +108 -0
  289. data/assets/js/base/highlight.js +12 -0
  290. data/assets/js/base/init-tooltips.js +12 -0
  291. data/assets/js/bootstrap.bundle.js +6312 -0
  292. data/assets/js/bootstrap.bundle.js.map +1 -0
  293. data/assets/js/bootstrap.bundle.min.js +7 -0
  294. data/assets/js/bootstrap.bundle.min.js.map +1 -0
  295. data/assets/js/bootstrap.esm.js +4447 -0
  296. data/assets/js/bootstrap.esm.js.map +1 -0
  297. data/assets/js/bootstrap.esm.min.js +7 -0
  298. data/assets/js/bootstrap.esm.min.js.map +1 -0
  299. data/assets/js/bootstrap.js +4494 -0
  300. data/assets/js/bootstrap.js.map +1 -0
  301. data/assets/js/bootstrap.min.js +7 -0
  302. data/assets/js/bootstrap.min.js.map +1 -0
  303. data/site.webmanifest +11 -0
  304. metadata +611 -0
@@ -0,0 +1,91 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Sponsors Carousel Component
4
+ Purpose: Renders sponsor logos as a Bootstrap carousel with optional title and
5
+ message. Automatically cycles through active sponsors.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Multi-level data source hierarchy for flexible configuration
10
+ - Carousel display with fade transition for visual polish
11
+ - Markdown-enabled message for rich introductory text
12
+ - Active-flag filtering to soft-delete without data removal
13
+
14
+ Required Fields (per item in the members array):
15
+ - name: Sponsor display name (used as alt text)
16
+ - image: Logo source — bare filename (resolved via image_base_path) or absolute URL
17
+ - url: Sponsor website URL
18
+
19
+ Optional Data Fields:
20
+ - image_base_path: Base path for bare filenames (default: /assets/img/base/)
21
+
22
+ Optional Inputs (from include):
23
+ - data: Sponsors data object (overrides all fallbacks)
24
+ - id: Carousel element ID (default: "sponsorsCarousel")
25
+ - with_title: Set false to suppress title/message block
26
+
27
+ Data Source Hierarchy (in priority order):
28
+ 1. include.data - Explicitly passed sponsors data object
29
+ 2. page.with_sponsors_data - Page front matter configuration
30
+ 3. site.data.sponsors - Site-specific sponsors configuration
31
+ 4. site.data.base.sponsors - Theme default sponsors data
32
+
33
+ Conditional Logic:
34
+ - Component renders only when page.with_sponsors is true
35
+ - Title/message block suppressed when include.with_title is false
36
+ - Members filtered by is_active != false
37
+ ================================================================================
38
+ {% endcomment %}
39
+
40
+ {%- assign with_sponsors = include.with_sponsors
41
+ | default: page.with_sponsors
42
+ %}
43
+
44
+ {%- assign with_sponsors_data = include.data
45
+ | default: page.with_sponsors_data
46
+ | default: site.data.sponsors
47
+ | default: site.data.base.sponsors
48
+ %}
49
+
50
+ {%- if with_sponsors -%}
51
+
52
+ {%- assign with_sponsors_schema = site.data.base.sponsors_schema.properties.with_sponsors_data.properties %}
53
+
54
+ {%- assign sponsors_title = with_sponsors_data.title | default: with_sponsors_schema.title.default -%}
55
+ {%- assign sponsors_icon = with_sponsors_data.icon | default: with_sponsors_schema.icon.default -%}
56
+ {%- assign sponsors_message = with_sponsors_data.message | default: with_sponsors_schema.message.default -%}
57
+ {%- assign sponsors_members = with_sponsors_data.members | default: with_sponsors_schema.members.default -%}
58
+ {%- assign sponsors_image_base = with_sponsors_data.image_base_path | default: with_sponsors_schema.image_base_path.default -%}
59
+
60
+ {%- assign carousel_id = include.id | default: "sponsorsCarousel" -%}
61
+
62
+ <div id="{{ carousel_id }}" class="d-flex flex-wrap mb-5">
63
+
64
+ {%- comment %} === Presentation (Begin) === {% endcomment %}
65
+ {%- if include.with_title != false %}
66
+ <p class="h6"><i class="{{ sponsors_icon }}"></i> {{ sponsors_title }}</p>
67
+ {{ sponsors_message | markdownify | decorate_links }}
68
+ {%- endif %}
69
+
70
+ <div class="carousel slide carousel-fade" data-bs-ride="carousel">
71
+ <div class="carousel-inner">
72
+ {%- for member in sponsors_members -%}
73
+ {%- if member.is_active != false %}
74
+ <div class="carousel-item{% if forloop.first %} active{% endif %}">
75
+ <div class="w-100 align-middle" style="height: 80px; width: 262px">
76
+ {%- if member.image contains "://" -%}
77
+ <a href="{{ member.url }}"><img src="{{ member.image }}" class="rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
78
+ {%- else -%}
79
+ <a href="{{ member.url }}"><img src="{{ site.baseurl }}{{ sponsors_image_base }}{{ member.image }}" class="rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
80
+ {%- endif -%}
81
+ </div>
82
+ </div>
83
+ {%- endif -%}
84
+ {%- endfor %}
85
+ </div>
86
+ </div>
87
+ {%- comment %} === Presentation (End) === {% endcomment %}
88
+
89
+ </div>
90
+
91
+ {%- endif -%}
@@ -0,0 +1,65 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Page Title Component
4
+ Purpose: Renders page title section with optional subtitle/lead text. Displays
5
+ primary heading and descriptive lead with customizable styling.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Semantic headings: h1 primary, lead text for subtitle
10
+ - Data source hierarchy: flexible configuration
11
+ - Customizable styling: class overrides per element
12
+ - Optional lead text: subtitle/description support
13
+ - Schema-based defaults: consistent styling
14
+ - Responsive layout: bootstrap grid
15
+
16
+ Required Inputs (from data objects):
17
+ None - uses page.title as fallback
18
+
19
+ Optional Inputs (from data objects):
20
+ - title: Page heading text (defaults to page.title)
21
+ - title_lead: Subtitle/description text
22
+
23
+ Optional Inputs (from include):
24
+ - data: Title configuration object
25
+
26
+ Data Source Hierarchy (in priority order):
27
+ 1. include.data - Explicitly passed configuration
28
+ 2. page.with_title_data - Page front matter
29
+ 3. site.data.title - Site configuration
30
+ 4. site.data.base.title - Theme defaults
31
+
32
+ Conditional Logic:
33
+ - title_lead present: Only renders subtitle if not empty
34
+ ================================================================================
35
+ {% endcomment %}
36
+
37
+ {%- assign with_title = include.with_title
38
+ | default: page.with_title
39
+ %}
40
+
41
+ {%- assign with_title_data = include.data
42
+ | default: page.with_title_data
43
+ | default: site.data.title
44
+ | default: site.data.base.title
45
+ %}
46
+
47
+ {%- if with_title -%}
48
+
49
+ {%- assign with_title_schema = site.data.base.title_schema.properties.with_title_data.properties %}
50
+
51
+ {%- comment %} === Presentation === {% endcomment %}
52
+ {%- assign class = with_title_data.class | default: with_title_schema.class.default %}
53
+ {%- assign title = with_title_data.title | default: page.title %}
54
+ {%- assign title_class = with_title_data.title_class | default: with_title_schema.title_class.default %}
55
+ {%- assign title_lead = with_title_data.title_lead | default: page.title_lead %}
56
+ {%- assign title_lead_class = with_title_data.title_lead_class | default: with_title_schema.title_lead_class.default %}
57
+
58
+ <div class="{{ class }}">
59
+ <p class="{{ title_class }}">{{ title }}</p>
60
+ {% if title_lead != "" %}
61
+ <p class="{{ title_lead_class }}">{{ title_lead }}</p>
62
+ {% endif %}
63
+ </div>
64
+
65
+ {%- endif -%}
@@ -0,0 +1,189 @@
1
+ {% capture tocWorkspace %}
2
+ {% comment %}
3
+ Copyright (c) 2017 Vladimir "allejo" Jimenez
4
+
5
+ Permission is hereby granted, free of charge, to any person
6
+ obtaining a copy of this software and associated documentation
7
+ files (the "Software"), to deal in the Software without
8
+ restriction, including without limitation the rights to use,
9
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the
11
+ Software is furnished to do so, subject to the following
12
+ conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24
+ OTHER DEALINGS IN THE SOFTWARE.
25
+ {% endcomment %}
26
+ {% comment %}
27
+ Version 1.2.1
28
+ https://github.com/allejo/jekyll-toc
29
+
30
+ "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
31
+
32
+ Usage:
33
+ {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
34
+
35
+ Parameters:
36
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
37
+
38
+ Optional Parameters:
39
+ * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
40
+ * class (string) : '' - a CSS class assigned to the TOC
41
+ * id (string) : '' - an ID to assigned to the TOC
42
+ * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
43
+ * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
44
+ * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
45
+ * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
46
+ * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
47
+ * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
48
+ * anchor_class (string) : '' - add custom class(es) for each anchor element
49
+ * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
50
+ * flat_toc (bool) : false - when set to true, the TOC will be a single level list
51
+
52
+ Output:
53
+ An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
54
+ generate the table of contents and will NOT output the markdown given to it
55
+ {% endcomment %}
56
+
57
+ {% capture newline %}
58
+ {% endcapture %}
59
+ {% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
60
+
61
+ {% capture deprecation_warnings %}{% endcapture %}
62
+
63
+ {% if include.baseurl %}
64
+ {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
65
+ {% endif %}
66
+
67
+ {% if include.skipNoIDs %}
68
+ {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
69
+ {% endif %}
70
+
71
+ {% capture jekyll_toc %}{% endcapture %}
72
+ {% assign orderedList = include.ordered | default: false %}
73
+ {% assign flatToc = include.flat_toc | default: false %}
74
+ {% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
75
+ {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
76
+ {% assign minHeader = include.h_min | default: 1 %}
77
+ {% assign maxHeader = include.h_max | default: 6 %}
78
+ {% assign nodes = include.html | strip | split: '<h' %}
79
+
80
+ {% assign firstHeader = true %}
81
+ {% assign currLevel = 0 %}
82
+ {% assign lastLevel = 0 %}
83
+
84
+ {% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
85
+
86
+ {% for node in nodes %}
87
+ {% if node == "" %}
88
+ {% continue %}
89
+ {% endif %}
90
+
91
+ {% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
92
+
93
+ {% if currLevel < minHeader or currLevel > maxHeader %}
94
+ {% continue %}
95
+ {% endif %}
96
+
97
+ {% assign _workspace = node | split: '</h' %}
98
+
99
+ {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
100
+ {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
101
+ {% assign htmlID = _idWorkspace[0] %}
102
+
103
+ {% assign _classWorkspace = _workspace[0] | split: 'class="' %}
104
+ {% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
105
+ {% assign htmlClass = _classWorkspace[0] %}
106
+
107
+ {% if htmlClass contains "no_toc" %}
108
+ {% continue %}
109
+ {% endif %}
110
+
111
+ {% if firstHeader %}
112
+ {% assign minHeader = currLevel %}
113
+ {% endif %}
114
+
115
+ {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
116
+ {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
117
+
118
+ {% if include.item_class and include.item_class != blank %}
119
+ {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
120
+ {% endif %}
121
+
122
+ {% if include.submenu_class and include.submenu_class != blank %}
123
+ {% assign subMenuLevel = currLevel | minus: 1 %}
124
+ {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
125
+ {% endif %}
126
+
127
+ {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
128
+
129
+ {% if htmlID %}
130
+ {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
131
+
132
+ {% if include.anchor_class %}
133
+ {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
134
+ {% endif %}
135
+
136
+ {% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
137
+ {% elsif skipNoIDs == true %}
138
+ {% continue %}
139
+ {% else %}
140
+ {% capture listItem %}{{ anchorBody }}{% endcapture %}
141
+ {% endif %}
142
+
143
+ {% if currLevel > lastLevel and flatToc == false %}
144
+ {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
145
+ {% elsif currLevel < lastLevel and flatToc == false %}
146
+ {% assign repeatCount = lastLevel | minus: currLevel %}
147
+
148
+ {% for i in (1..repeatCount) %}
149
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
150
+ {% endfor %}
151
+
152
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
153
+ {% else %}
154
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
155
+ {% endif %}
156
+
157
+ {% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
158
+
159
+ {% assign lastLevel = currLevel %}
160
+ {% assign firstHeader = false %}
161
+ {% endfor %}
162
+
163
+ {% if flatToc == true %}
164
+ {% assign repeatCount = 1 %}
165
+ {% else %}
166
+ {% assign repeatCount = minHeader | minus: 1 %}
167
+ {% assign repeatCount = lastLevel | minus: repeatCount %}
168
+ {% endif %}
169
+
170
+ {% for i in (1..repeatCount) %}
171
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
172
+ {% endfor %}
173
+
174
+ {% if jekyll_toc != '' %}
175
+ {% assign rootAttributes = '' %}
176
+ {% if include.class and include.class != blank %}
177
+ {% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
178
+ {% endif %}
179
+
180
+ {% if include.id and include.id != blank %}
181
+ {% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
182
+ {% endif %}
183
+
184
+ {% if rootAttributes %}
185
+ {% assign nodes = jekyll_toc | split: '>' %}
186
+ {% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
187
+ {% endif %}
188
+ {% endif %}
189
+ {% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}}
@@ -0,0 +1,95 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Table of Contents (TOC) Component
4
+ Purpose: Generates interactive table of contents from page content headings
5
+ using Jekyll-TOC generator. Displays in collapsible Bootstrap accordion.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Accordion wrapper: collapsible expandable container
10
+ - Heading extraction: automatic from page content
11
+ - Hierarchy support: nested outline structure
12
+ - Configuration-driven: customizable via data object
13
+ - Automatic anchor generation: heading IDs for linking
14
+ - Responsive: works on all screen sizes
15
+
16
+ Required Inputs (from page object):
17
+ - content: Page HTML content (automatically generated)
18
+
19
+ Optional Inputs (from data objects):
20
+ - class: Container CSS classes
21
+ - id: TOC wrapper ID (default: "page-toc")
22
+ - item_class: TOC item CSS classes (default: "my-2")
23
+ - anchor_class: Anchor link CSS classes
24
+ - h_min/h_max: Heading level range (h2-h4 typical)
25
+ - ordered: Use ordered list (true/false)
26
+ - submenu_class: Submenu CSS classes
27
+ - base_url: Base URL for anchors
28
+ - sanitize: Clean HTML in headings (boolean)
29
+ - skip_no_ids: Skip headings without IDs (boolean)
30
+ - flat_toc: Flatten hierarchy (boolean)
31
+
32
+ Optional Inputs (from include):
33
+ - data: TOC configuration object
34
+
35
+ Data Source Hierarchy (in priority order):
36
+ - with_toc: include.with_toc → page.with_toc
37
+ - with_toc_data: include.data → page.with_toc_data → site.data.toc → site.data.base.toc
38
+ ================================================================================
39
+ {% endcomment %}
40
+
41
+ {%- assign with_toc = include.with_toc
42
+ | default: page.with_toc
43
+ %}
44
+
45
+ {%- if with_toc -%}
46
+ {%- assign with_toc_data = include.data | default: page.with_toc_data | default: site.data.toc | default: site.data.base.toc %}
47
+ {%- assign with_toc_schema = site.data.base.toc_schema.properties["with_toc_data"].properties %}
48
+
49
+ {%- comment %} === Configuration properties === {% endcomment %}
50
+ {%- assign class = with_toc_data.class | default: with_toc_schema["class"].default %}
51
+ {%- assign id = with_toc_data.id | default: with_toc_schema["id"].default | default: "page-toc" %}
52
+ {%- assign item_class = with_toc_data.item_class | default: with_toc_schema["item_class"].default | default: "my-2" %}
53
+ {%- assign anchor_class = with_toc_data.anchor_class | default: with_toc_schema["anchor_class"].default | default: site.with_link_decorator_data.default_link_classes %}
54
+ {%- assign h_min = with_toc_data.h_min | default: with_toc_schema["h_min"].default %}
55
+ {%- assign h_max = with_toc_data.h_max | default: with_toc_schema["h_max"].default %}
56
+ {%- assign ordered = with_toc_data.ordered | default: with_toc_schema["ordered"].default %}
57
+ {%- assign submenu_class = with_toc_data.submenu_class | default: with_toc_schema["submenu_class"].default %}
58
+ {%- assign base_url = with_toc_data.base_url | default: with_toc_schema["base_url"].default %}
59
+ {%- assign sanitize = with_toc_data.sanitize | default: with_toc_schema["sanitize"].default %}
60
+ {%- assign skip_no_ids = with_toc_data.skip_no_ids | default: with_toc_schema["skip_no_ids"].default %}
61
+ {%- assign flat_toc = with_toc_data.flat_toc | default: with_toc_schema["flat_toc"].default %}
62
+
63
+ {%- comment %} === Presentation === {% endcomment %}
64
+
65
+ {%- comment %} --- HTML --- {% endcomment %}
66
+ <div class="accordion shadow-sm" id="pageToc">
67
+ <div class="accordion-item">
68
+ <div class="accordion-header" id="flush-headingOne">
69
+ <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
70
+ <i class="fa-solid fa-list" aria-hidden="true"></i>
71
+ <span class="mx-3 fw-bold">On this page</span>
72
+ </button>
73
+ </div>
74
+ <div id="flush-collapseOne" class="accordion-collapse collapse" data-bs-parent="#pageToc">
75
+ <div class="accordion-body small">
76
+ {%- include base/toc-generator.html.liquid
77
+ id=id
78
+ html=content
79
+ class=class
80
+ item_class=item_class
81
+ anchor_class=anchor_class
82
+ h_min=h_min
83
+ h_max=h_max
84
+ ordered=ordered
85
+ submenu_class=submenu_class
86
+ base_url=base_url
87
+ sanitize=sanitize
88
+ skip_no_ids=skip_no_ids
89
+ flat_toc=flat_toc
90
+ %}
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ {%- endif -%}
@@ -0,0 +1,7 @@
1
+ <tr>
2
+ <td>
3
+ {% if row.lines != "" %}
4
+ <pre class="mb-0"><code>{{ row.lines }}</code></pre>
5
+ {% endif %}
6
+ </td>
7
+ </tr>
@@ -0,0 +1,10 @@
1
+ <tr>
2
+ <td>
3
+ {% if row.commands != "" %}
4
+ <div class="input-group">
5
+ <textarea id="{{ card.page }}-{{ release[0] }}-key-{{ forloop.index }}" class="form-control font-monospace" placeholder="{{ row.overview }}" aria-label="{{ row.overview }}" aria-describedby="{{ card.page }}-button-{{ forloop.index }}" readonly rows="2">{{ row.commands }}</textarea>
6
+ <button id="{{ card.page }}-{{ release[0] }}-button-{{ forloop.index }}" class="btn btn-clipboard" type="button" aria-label="Copy to clipboard" data-clipboard-target="#{{ card.page }}-{{ release[0] }}-key-{{ forloop.index }}" data-bs-toggle="tooltip" data-bs-title="Copy to clipboard"><i class="fa-solid fa-clipboard"></i></button>
7
+ </div>
8
+ {% endif %}
9
+ </td>
10
+ </tr>
@@ -0,0 +1,9 @@
1
+ <tr>
2
+ <td>
3
+ {% for rows in release %}
4
+ {% for row in rows.docs %}
5
+ <a class="btn btn-sm btn-primary{% if row.name == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.link }}"{% endif %} role="button"><i class="fa-solid fa-file"></i> {{ row.name }}</a>
6
+ {% endfor %}
7
+ {% endfor %}
8
+ </td>
9
+ </tr>
@@ -0,0 +1,11 @@
1
+ <tr>
2
+ <td>
3
+ {% for rows in release %}
4
+ {% for row in rows.documentation %}
5
+ {% if row.title != "" %}
6
+ <a class="btn btn-primary" href="{{ row.link }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> {{ row.title }}</a>
7
+ {% endif %}
8
+ {% endfor %}
9
+ {% endfor %}
10
+ </td>
11
+ </tr>
@@ -0,0 +1,16 @@
1
+ <tr>
2
+ <td>
3
+ {% if row.overview != "" %}
4
+ {{ row.overview }}
5
+ {% endif %}
6
+
7
+ {% if row.date != "" %}
8
+ {{ row.date | date_to_string: "ordinal", "US" }}
9
+ {% endif %}
10
+
11
+ {% if row.url != "" %}
12
+ <a href="{{ row.url }}"><i class="fas fa-exclamation-circle"></i> Know more</a>
13
+ {% else %}
14
+ {% endif %}
15
+ </td>
16
+ </tr>
@@ -0,0 +1,8 @@
1
+ <tr>
2
+ <td>{{ row.architecture }}</td>
3
+ <td>{% if row.iso] != "" %}<a class="btn btn-primary" href="{{ row.iso }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Mirrors</a>{% endif %}</td>
4
+ <td>{% if row.rpm] != "" %}<a class="btn btn-primary" href="{{ row.rpm }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Mirrors</a>{% endif %}</td>
5
+ <td>{% if row.cloud] != "" %}<a class="btn btn-primary" href="{{ row.cloud }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Images</a>{% endif %}</td>
6
+ <td>{% if row.containers] != "" %}<a class="btn btn-primary" href="{{ row.containers }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Images</a>{% endif %}</td>
7
+ <td>{% if row.vagrant] != "" %}<a class="btn btn-primary" href="{{ row.vagrant }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Boxes</a>{% endif %}</td>
8
+ </tr>
@@ -0,0 +1,26 @@
1
+ <tr>
2
+ <td class="p-0">
3
+ <div id="carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" class="carousel carousel-dark slide" data-bs-ride="true">
4
+ <div class="carousel-indicators">
5
+ {% for row in rows.screenshots %}
6
+ <button type="button" data-bs-target="#carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" data-bs-slide-to="{{ forloop.index0 }}" {% if forloop.first %}class="active" {% endif %}aria-current="true" aria-label="Screenshot {{ forloop.index }}"></button>
7
+ {% endfor %}
8
+ </div>
9
+ <div class="carousel-inner">
10
+ {% for row in rows.screenshots %}
11
+ <div class="carousel-item{% if forloop.first %} active{% endif %}">
12
+ <img class="d-block w-100" src="{{ site.baseurl }}/assets/img/download/{{ card.page }}-{{ release[0] }}-{{ row.src }}" alt="{{ row.alt }}" />
13
+ </div>
14
+ {% endfor %}
15
+ </div>
16
+ <button class="carousel-control-prev" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" data-bs-slide="prev">
17
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
18
+ <span class="visually-hidden">Previous</span>
19
+ </button>
20
+ <button class="carousel-control-next" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" data-bs-slide="next">
21
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
22
+ <span class="visually-hidden">Next</span>
23
+ </button>
24
+ </div>
25
+ </td>
26
+ </tr>
@@ -0,0 +1,32 @@
1
+ <tr>
2
+ <td class="p-0">
3
+ <div id="carouselScreenshotsIndicators-{{ release_id }}" class="carousel carousel-dark slide" data-bs-ride="true">
4
+ <div class="carousel-indicators">
5
+ {% for row in rows.screenshots %}
6
+ <button
7
+ {% if forloop.first %}class="active"{% endif %}
8
+ type="button"
9
+ data-bs-target="#carouselScreenshotsIndicators-{{ release_id }}"
10
+ data-bs-slide-to="{{ forloop.index0 }}"
11
+ aria-current="true"
12
+ aria-label="Screenshot {{ forloop.index }}"></button>
13
+ {% endfor %}
14
+ </div>
15
+ <div class="carousel-inner">
16
+ {% for row in rows.screenshots %}
17
+ <div class="carousel-item{% if forloop.first %} active{% endif %}">
18
+ <img class="d-block w-100" src="{{site.url }}{{ site.baseurl }}/assets/img/download/{{ row.src }}" alt="{{ row.alt }}" />
19
+ </div>
20
+ {% endfor %}
21
+ </div>
22
+ <button class="carousel-control-prev" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ release_id }}" 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="#carouselScreenshotsIndicators-{{ release_id }}" 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
+ </td>
32
+ </tr>
@@ -0,0 +1,8 @@
1
+ <tr>
2
+ <td>{{ row.arch }}</td>
3
+ <td><a class="btn btn-sm btn-primary{% if row.iso] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.iso }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
4
+ <td><a class="btn btn-sm btn-primary{% if row.rpm] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.rpm }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
5
+ <td><a class="btn btn-sm btn-primary{% if row.cloud] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.cloud }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
6
+ <td><a class="btn btn-sm btn-primary{% if row.containers] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.containers }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
7
+ <td><a class="btn btn-sm btn-primary{% if row.vagrant] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.vagrant }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
8
+ </tr>
@@ -0,0 +1,3 @@
1
+ </tbody>
2
+ </table>
3
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-bordered mb-0">
3
+ <thead class="table-light">
4
+ <tr>
5
+ <th scope="col"><i class="fa-solid fa-terminal"></i> {{ row.title }}</th>
6
+ </tr>
7
+ </thead>
8
+ <tbody>
@@ -0,0 +1,8 @@
1
+ <div class="table-responsive">
2
+ <table class="table mb-0">
3
+ <thead class="table-light">
4
+ <tr>
5
+ <th scope="col"><i class="fas fa-sync-alt"></i> {{ row.overview }}</th>
6
+ </tr>
7
+ </thead>
8
+ <tbody>
@@ -0,0 +1,8 @@
1
+ <div class="table-responsive">
2
+ <table class="table mb-0">
3
+ <thead class="table-light">
4
+ <tr>
5
+ <th scope="col"><i class="fa-solid fa-book"></i> Documentation</th>
6
+ </tr>
7
+ </thead>
8
+ <tbody>
@@ -0,0 +1,8 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-bordered mb-0">
3
+ <thead class="table-light">
4
+ <tr>
5
+ <th scope="col"><i class="fa-solid fa-book"></i> Documentation</th>
6
+ </tr>
7
+ </thead>
8
+ <tbody>
@@ -0,0 +1,8 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-bordered mb-0">
3
+ <thead class="table-light">
4
+ <tr>
5
+ <th scope="col"><i class="fas fa-hourglass-end"></i> End-of-life</th>
6
+ </tr>
7
+ </thead>
8
+ <tbody>
@@ -0,0 +1,13 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-bordered mb-0">
3
+ <thead class="table-light">
4
+ <tr>
5
+ <th scope="col"><i class="fa-solid fa-microchip"></i> Architecture</th>
6
+ <th scope="col">ISOs</th>
7
+ <th scope="col">RPMs</th>
8
+ <th scope="col">Cloud</th>
9
+ <th scope="col">Containers</th>
10
+ <th scope="col">Vagrant</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>