jekyll-theme-centos 2.52.0.beta.3 → 2.52.0.beta.5

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 (315) hide show
  1. checksums.yaml +4 -4
  2. data/_data/base/announcement_schema.yml +50 -0
  3. data/_data/base/artwork_schema.yml +46 -0
  4. data/_data/base/backtotop_schema.yml +53 -0
  5. data/_data/base/bits.yml +96 -0
  6. data/_data/base/bits_schema.yml +183 -0
  7. data/_data/base/breadcrumb_schema.yml +14 -0
  8. data/_data/base/breakingnews_schema.yml +59 -0
  9. data/_data/base/color.yml +1042 -0
  10. data/_data/base/color_schema.yml +1036 -0
  11. data/_data/base/content.yml +2 -0
  12. data/_data/base/content_schema.yml +26 -0
  13. data/_data/base/converter_link_schema.yml +48 -0
  14. data/_data/base/copyright.yml +12 -0
  15. data/_data/base/copyright_schema.yml +34 -0
  16. data/_data/base/copyvalue_schema.yml +49 -0
  17. data/_data/base/datatable_schema.yml +57 -0
  18. data/_data/base/event_schema.yml +122 -0
  19. data/_data/base/fontawesome_schema.yml +49 -0
  20. data/_data/base/highlight_schema.yml +68 -0
  21. data/_data/base/languages.yml +186 -0
  22. data/_data/base/link_schema.yml +153 -0
  23. data/_data/base/locales_schema.yml +25 -0
  24. data/_data/base/navbar.yml +20 -0
  25. data/_data/base/navbar_schema.yml +121 -0
  26. data/_data/base/navindex_schema.yml +67 -0
  27. data/_data/base/ogp_schema.yml +186 -0
  28. data/_data/base/project.yml +37 -0
  29. data/_data/base/project_schema.yml +120 -0
  30. data/_data/base/shortcut_schema.yml +74 -0
  31. data/_data/base/social.yml +25 -0
  32. data/_data/base/social_schema.yml +53 -0
  33. data/_data/base/title_schema.yml +49 -0
  34. data/_data/base/toc_schema.yml +100 -0
  35. data/_data/download/cards.yml +309 -0
  36. data/_data/download/navbar.yml +11 -0
  37. data/_data/sponsors/carousel.yml +37 -0
  38. data/_data/sponsors/navbar.yml +6 -0
  39. data/_includes/base/announcement.html.liquid +51 -0
  40. data/_includes/base/artwork.html.liquid +49 -0
  41. data/_includes/base/backtotop.html.liquid +51 -0
  42. data/_includes/base/bits.html.liquid +135 -0
  43. data/_includes/base/breadcrumb.html.liquid +37 -0
  44. data/_includes/base/breakingnews.html.liquid +74 -0
  45. data/_includes/base/card.html.liquid +96 -0
  46. data/_includes/base/copyright.html.liquid +56 -0
  47. data/_includes/base/copyvalue.html.liquid +59 -0
  48. data/_includes/base/datatable.html.liquid +64 -0
  49. data/_includes/base/event.html.liquid +89 -0
  50. data/_includes/base/fontawesome.html.liquid +58 -0
  51. data/_includes/base/head.html.liquid +101 -0
  52. data/_includes/base/highlight.html.liquid +65 -0
  53. data/_includes/base/image.html.liquid +42 -0
  54. data/_includes/base/link.html.liquid +139 -0
  55. data/_includes/base/locales.html.liquid +41 -0
  56. data/_includes/base/navbar.html.liquid +106 -0
  57. data/_includes/base/navindex.html.liquid +162 -0
  58. data/_includes/base/ogp.html.liquid +118 -0
  59. data/_includes/base/project.html.liquid +90 -0
  60. data/_includes/base/script.html.liquid +59 -0
  61. data/_includes/base/shortcut.html.liquid +65 -0
  62. data/_includes/base/social.html.liquid +59 -0
  63. data/_includes/base/title.html.liquid +52 -0
  64. data/_includes/base/toc.html.liquid +91 -0
  65. data/_includes/base/toc_generator.html.liquid +189 -0
  66. data/_includes/download/cards-body-commands.html +7 -0
  67. data/_includes/download/cards-body-convert.html +10 -0
  68. data/_includes/download/cards-body-doc.html +9 -0
  69. data/_includes/download/cards-body-documentation.html +11 -0
  70. data/_includes/download/cards-body-eol.html +16 -0
  71. data/_includes/download/cards-body-mirrors.html +8 -0
  72. data/_includes/download/cards-body-screenshot.html +26 -0
  73. data/_includes/download/cards-body-screenshots.html +32 -0
  74. data/_includes/download/cards-body.html +8 -0
  75. data/_includes/download/cards-footer.html +3 -0
  76. data/_includes/download/cards-header-commands.html +8 -0
  77. data/_includes/download/cards-header-convert.html +8 -0
  78. data/_includes/download/cards-header-doc.html +8 -0
  79. data/_includes/download/cards-header-documentation.html +8 -0
  80. data/_includes/download/cards-header-eol.html +8 -0
  81. data/_includes/download/cards-header-mirrors.html +13 -0
  82. data/_includes/download/cards-header-screenshot.html +8 -0
  83. data/_includes/download/cards-header-screenshots.html +8 -0
  84. data/_includes/download/cards-header.html +13 -0
  85. data/_includes/download/cards.html +120 -0
  86. data/_includes/sponsors/cards.html +11 -0
  87. data/_includes/sponsors/carousel.html +24 -0
  88. data/_layouts/base/default.html +117 -0
  89. data/_layouts/download/cards.html +7 -0
  90. data/_layouts/download/default.html +7 -0
  91. data/_layouts/people/default.html +68 -0
  92. data/_sass/base/_customization.scss +251 -0
  93. data/_sass/base/_light-dark.scss +10 -0
  94. data/_sass/base/_maps.scss +104 -0
  95. data/_sass/base/_variables.scss +232 -0
  96. data/_sass/bootstrap/_accordion.scss +153 -0
  97. data/_sass/bootstrap/_alert.scss +68 -0
  98. data/_sass/bootstrap/_badge.scss +38 -0
  99. data/_sass/bootstrap/_breadcrumb.scss +40 -0
  100. data/_sass/bootstrap/_button-group.scss +147 -0
  101. data/_sass/bootstrap/_buttons.scss +216 -0
  102. data/_sass/bootstrap/_card.scss +238 -0
  103. data/_sass/bootstrap/_carousel.scss +226 -0
  104. data/_sass/bootstrap/_close.scss +66 -0
  105. data/_sass/bootstrap/_containers.scss +41 -0
  106. data/_sass/bootstrap/_dropdown.scss +250 -0
  107. data/_sass/bootstrap/_forms.scss +9 -0
  108. data/_sass/bootstrap/_functions.scss +302 -0
  109. data/_sass/bootstrap/_grid.scss +39 -0
  110. data/_sass/bootstrap/_helpers.scss +12 -0
  111. data/_sass/bootstrap/_images.scss +42 -0
  112. data/_sass/bootstrap/_list-group.scss +199 -0
  113. data/_sass/bootstrap/_maps.scss +174 -0
  114. data/_sass/bootstrap/_mixins.scss +42 -0
  115. data/_sass/bootstrap/_modal.scss +240 -0
  116. data/_sass/bootstrap/_nav.scss +197 -0
  117. data/_sass/bootstrap/_navbar.scss +289 -0
  118. data/_sass/bootstrap/_offcanvas.scss +147 -0
  119. data/_sass/bootstrap/_pagination.scss +109 -0
  120. data/_sass/bootstrap/_placeholders.scss +51 -0
  121. data/_sass/bootstrap/_popover.scss +196 -0
  122. data/_sass/bootstrap/_progress.scss +68 -0
  123. data/_sass/bootstrap/_reboot.scss +617 -0
  124. data/_sass/bootstrap/_root.scss +187 -0
  125. data/_sass/bootstrap/_spinners.scss +86 -0
  126. data/_sass/bootstrap/_tables.scss +171 -0
  127. data/_sass/bootstrap/_toasts.scss +73 -0
  128. data/_sass/bootstrap/_tooltip.scss +119 -0
  129. data/_sass/bootstrap/_transitions.scss +27 -0
  130. data/_sass/bootstrap/_type.scss +106 -0
  131. data/_sass/bootstrap/_utilities.scss +806 -0
  132. data/_sass/bootstrap/_variables-dark.scss +102 -0
  133. data/_sass/bootstrap/_variables.scss +1753 -0
  134. data/_sass/bootstrap/bootstrap-grid.scss +62 -0
  135. data/_sass/bootstrap/bootstrap-reboot.scss +10 -0
  136. data/_sass/bootstrap/bootstrap-utilities.scss +19 -0
  137. data/_sass/bootstrap/bootstrap.scss +52 -0
  138. data/_sass/bootstrap/forms/_floating-labels.scss +97 -0
  139. data/_sass/bootstrap/forms/_form-check.scss +189 -0
  140. data/_sass/bootstrap/forms/_form-control.scss +214 -0
  141. data/_sass/bootstrap/forms/_form-range.scss +91 -0
  142. data/_sass/bootstrap/forms/_form-select.scss +80 -0
  143. data/_sass/bootstrap/forms/_form-text.scss +11 -0
  144. data/_sass/bootstrap/forms/_input-group.scss +132 -0
  145. data/_sass/bootstrap/forms/_labels.scss +36 -0
  146. data/_sass/bootstrap/forms/_validation.scss +12 -0
  147. data/_sass/bootstrap/helpers/_clearfix.scss +3 -0
  148. data/_sass/bootstrap/helpers/_color-bg.scss +7 -0
  149. data/_sass/bootstrap/helpers/_colored-links.scss +30 -0
  150. data/_sass/bootstrap/helpers/_focus-ring.scss +5 -0
  151. data/_sass/bootstrap/helpers/_icon-link.scss +25 -0
  152. data/_sass/bootstrap/helpers/_position.scss +36 -0
  153. data/_sass/bootstrap/helpers/_ratio.scss +26 -0
  154. data/_sass/bootstrap/helpers/_stacks.scss +15 -0
  155. data/_sass/bootstrap/helpers/_stretched-link.scss +15 -0
  156. data/_sass/bootstrap/helpers/_text-truncation.scss +7 -0
  157. data/_sass/bootstrap/helpers/_visually-hidden.scss +8 -0
  158. data/_sass/bootstrap/helpers/_vr.scss +8 -0
  159. data/_sass/bootstrap/mixins/_alert.scss +18 -0
  160. data/_sass/bootstrap/mixins/_backdrop.scss +14 -0
  161. data/_sass/bootstrap/mixins/_banner.scss +7 -0
  162. data/_sass/bootstrap/mixins/_border-radius.scss +78 -0
  163. data/_sass/bootstrap/mixins/_box-shadow.scss +24 -0
  164. data/_sass/bootstrap/mixins/_breakpoints.scss +127 -0
  165. data/_sass/bootstrap/mixins/_buttons.scss +70 -0
  166. data/_sass/bootstrap/mixins/_caret.scss +69 -0
  167. data/_sass/bootstrap/mixins/_clearfix.scss +9 -0
  168. data/_sass/bootstrap/mixins/_color-mode.scss +21 -0
  169. data/_sass/bootstrap/mixins/_color-scheme.scss +7 -0
  170. data/_sass/bootstrap/mixins/_container.scss +11 -0
  171. data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
  172. data/_sass/bootstrap/mixins/_forms.scss +163 -0
  173. data/_sass/bootstrap/mixins/_gradients.scss +47 -0
  174. data/_sass/bootstrap/mixins/_grid.scss +151 -0
  175. data/_sass/bootstrap/mixins/_image.scss +16 -0
  176. data/_sass/bootstrap/mixins/_list-group.scss +26 -0
  177. data/_sass/bootstrap/mixins/_lists.scss +7 -0
  178. data/_sass/bootstrap/mixins/_pagination.scss +10 -0
  179. data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
  180. data/_sass/bootstrap/mixins/_resize.scss +6 -0
  181. data/_sass/bootstrap/mixins/_table-variants.scss +24 -0
  182. data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
  183. data/_sass/bootstrap/mixins/_transition.scss +26 -0
  184. data/_sass/bootstrap/mixins/_utilities.scss +97 -0
  185. data/_sass/bootstrap/mixins/_visually-hidden.scss +38 -0
  186. data/_sass/bootstrap/utilities/_api.scss +47 -0
  187. data/_sass/bootstrap/vendor/_rfs.scss +348 -0
  188. data/assets/css/base/stylesheet.min.scss +35 -0
  189. data/assets/icons/android-chrome-192.png +0 -0
  190. data/assets/icons/android-chrome-512.png +0 -0
  191. data/assets/icons/apple-touch-icon.png +0 -0
  192. data/assets/icons/favicon-16.png +0 -0
  193. data/assets/icons/favicon-32.png +0 -0
  194. data/assets/icons/favicon.ico +0 -0
  195. data/assets/icons/favicon.svg +1 -0
  196. data/assets/img/anaconda-symbolic.svg +1 -0
  197. data/assets/img/anaconda.svg +1 -0
  198. data/assets/img/base/centos-colors.gpl +55 -0
  199. data/assets/img/base/page-layout-default.png +0 -0
  200. data/assets/img/base/page-layout-default.svg +1158 -0
  201. data/assets/img/base/page-with-alert.png +0 -0
  202. data/assets/img/base/page-with-alert.svg +359 -0
  203. data/assets/img/base/page-with-announcement.png +0 -0
  204. data/assets/img/base/page-with-announcement.svg +499 -0
  205. data/assets/img/base/page-with-artwork.png +0 -0
  206. data/assets/img/base/page-with-artwork.svg +368 -0
  207. data/assets/img/base/page-with-backtotop.png +0 -0
  208. data/assets/img/base/page-with-backtotop.svg +275 -0
  209. data/assets/img/base/page-with-bits.png +0 -0
  210. data/assets/img/base/page-with-bits.svg +311 -0
  211. data/assets/img/base/page-with-breadcrumb.png +0 -0
  212. data/assets/img/base/page-with-breadcrumb.svg +676 -0
  213. data/assets/img/base/page-with-breakingnews.png +0 -0
  214. data/assets/img/base/page-with-breakingnews.svg +903 -0
  215. data/assets/img/base/page-with-color.png +0 -0
  216. data/assets/img/base/page-with-color.svg +57 -0
  217. data/assets/img/base/page-with-copyright.png +0 -0
  218. data/assets/img/base/page-with-copyright.svg +233 -0
  219. data/assets/img/base/page-with-copyvalue.png +0 -0
  220. data/assets/img/base/page-with-copyvalue.svg +57 -0
  221. data/assets/img/base/page-with-datatable.png +0 -0
  222. data/assets/img/base/page-with-datatable.svg +857 -0
  223. data/assets/img/base/page-with-event.png +0 -0
  224. data/assets/img/base/page-with-event.svg +522 -0
  225. data/assets/img/base/page-with-fontawesome.png +0 -0
  226. data/assets/img/base/page-with-fontawesome.svg +147 -0
  227. data/assets/img/base/page-with-heading.png +0 -0
  228. data/assets/img/base/page-with-heading.svg +57 -0
  229. data/assets/img/base/page-with-highlight.png +0 -0
  230. data/assets/img/base/page-with-highlight.svg +86 -0
  231. data/assets/img/base/page-with-link.png +0 -0
  232. data/assets/img/base/page-with-link.svg +395 -0
  233. data/assets/img/base/page-with-locales.png +0 -0
  234. data/assets/img/base/page-with-locales.svg +724 -0
  235. data/assets/img/base/page-with-navbar.png +0 -0
  236. data/assets/img/base/page-with-navbar.svg +438 -0
  237. data/assets/img/base/page-with-navindex.png +0 -0
  238. data/assets/img/base/page-with-navindex.svg +279 -0
  239. data/assets/img/base/page-with-ogp.png +0 -0
  240. data/assets/img/base/page-with-ogp.svg +368 -0
  241. data/assets/img/base/page-with-project.png +0 -0
  242. data/assets/img/base/page-with-project.svg +822 -0
  243. data/assets/img/base/page-with-shortcut.png +0 -0
  244. data/assets/img/base/page-with-shortcut.svg +233 -0
  245. data/assets/img/base/page-with-social.png +0 -0
  246. data/assets/img/base/page-with-social.svg +233 -0
  247. data/assets/img/base/page-with-title.png +0 -0
  248. data/assets/img/base/page-with-title.svg +584 -0
  249. data/assets/img/base/page-with-toc.png +0 -0
  250. data/assets/img/base/page-with-toc.svg +438 -0
  251. data/assets/img/base/screenshot-example-1200x600.png +0 -0
  252. data/assets/img/base/screenshot-example-1200x600.svg +114 -0
  253. data/assets/img/centos-dynamicmsg-logo.svg +1 -0
  254. data/assets/img/centos-dynamicmsg-type.svg +1 -0
  255. data/assets/img/centos-dynamicmsg-whitelogo.svg +1 -0
  256. data/assets/img/centos-dynamicmsg-whitetype.svg +1 -0
  257. data/assets/img/centos-gdm-whitelogo.svg +1 -0
  258. data/assets/img/centos-ipa-whiteheader.svg +1 -0
  259. data/assets/img/centos-logo-2bits.svg +1 -0
  260. data/assets/img/centos-logo.svg +1 -0
  261. data/assets/img/centos-message-logo.svg +1 -0
  262. data/assets/img/centos-motif.png +0 -0
  263. data/assets/img/centos-poweredby-logo.svg +1 -0
  264. data/assets/img/centos-social-share.png +0 -0
  265. data/assets/img/centos-symbol-2bits.svg +1 -0
  266. data/assets/img/centos-symbol.svg +1 -0
  267. data/assets/img/centos-type.svg +1 -0
  268. data/assets/img/centos-vertical-logo.svg +1 -0
  269. data/assets/img/centos-vertical-message-logo.svg +1 -0
  270. data/assets/img/centos-whitelogo.svg +1 -0
  271. data/assets/img/download/centos-linux-7-2009-screenshot-n.png +0 -0
  272. data/assets/img/download/centos-stream-8-screenshot-n.png +0 -0
  273. data/assets/img/download/centos-stream-9-screenshot-n.png +0 -0
  274. data/assets/img/download/distribution-release-screenshot-1.png +0 -0
  275. data/assets/img/download/distribution-release-screenshot-2.png +0 -0
  276. data/assets/img/download/distribution-release-screenshot-3.png +0 -0
  277. data/assets/img/download/distribution-release-screenshot-n.png +0 -0
  278. data/assets/img/download/distribution-release-screenshot-n.svg +134 -0
  279. data/assets/img/download/download.svg +421 -0
  280. data/assets/img/download/fig-the-downloads-cards-presentation-template.png +0 -0
  281. data/assets/img/people/page.svg +900 -0
  282. data/assets/img/people/page.webp +0 -0
  283. data/assets/img/people/username.webp +0 -0
  284. data/assets/img/sponsors/screenshot-sponsors-cards-layout.png +0 -0
  285. data/assets/img/sponsors/screenshot-sponsors-cards.png +0 -0
  286. data/assets/img/sponsors/screenshot-sponsors-carousel.png +0 -0
  287. data/assets/img/sponsors/screenshot-sponsors-default-layout.png +0 -0
  288. data/assets/img/sponsors/screenshot-sponsors-logo.png +0 -0
  289. data/assets/img/sponsors/sponsor-logo-1.png +0 -0
  290. data/assets/img/sponsors/sponsor-logo-2.png +0 -0
  291. data/assets/img/sponsors/sponsor-logo-3.png +0 -0
  292. data/assets/img/sponsors/sponsor-logo-4.png +0 -0
  293. data/assets/img/sponsors/sponsor-logo-5.png +0 -0
  294. data/assets/img/sponsors/sponsor-logo-6.png +0 -0
  295. data/assets/img/sponsors/sponsor-logo-7.png +0 -0
  296. data/assets/img/sponsors/sponsor-logo-8.png +0 -0
  297. data/assets/img/sponsors/sponsors-logo.svg +563 -0
  298. data/assets/js/base/backtotop.js +23 -0
  299. data/assets/js/base/copyvalue.js +251 -0
  300. data/assets/js/base/datatable.js +55 -0
  301. data/assets/js/base/highlight.js +6 -0
  302. data/assets/js/base/init-tooltips.js +5 -0
  303. data/assets/js/bootstrap.bundle.js +6312 -0
  304. data/assets/js/bootstrap.bundle.js.map +1 -0
  305. data/assets/js/bootstrap.bundle.min.js +7 -0
  306. data/assets/js/bootstrap.bundle.min.js.map +1 -0
  307. data/assets/js/bootstrap.esm.js +4447 -0
  308. data/assets/js/bootstrap.esm.js.map +1 -0
  309. data/assets/js/bootstrap.esm.min.js +7 -0
  310. data/assets/js/bootstrap.esm.min.js.map +1 -0
  311. data/assets/js/bootstrap.js +4494 -0
  312. data/assets/js/bootstrap.js.map +1 -0
  313. data/assets/js/bootstrap.min.js +7 -0
  314. data/assets/js/bootstrap.min.js.map +1 -0
  315. metadata +314 -1
@@ -0,0 +1,90 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Project Showcase Component
4
+ Purpose: Renders a full-width project/product hero section with featured
5
+ content and supplementary resource links.
6
+ ================================================================================
7
+
8
+ Design Logic:
9
+ - Hero-style layout: full-width container with dark background
10
+ - Wraps card component for flexible content presentation
11
+ - Dark theme (text-bg-dark) for high contrast and visual prominence
12
+ - Resource section for downloadable/related content links
13
+ - Data source hierarchy enables both page-level and site-level config
14
+ - Container-based layout for max-width constraint on large screens
15
+ - Reuses link component for action and resource buttons
16
+
17
+ Optional Inputs:
18
+ - data: Project data object (overrides all fallbacks)
19
+ - project.name, description, icon, image, screenshot: Content
20
+ - project.actions, resources: Arrays of buttons [{name, url, icon}]
21
+
22
+ Data Source Hierarchy (priority):
23
+ 1. include.data
24
+ 2. page.with_project_data
25
+ 3. site.data.project
26
+ 4. site.data.base.project
27
+ ================================================================================
28
+ {% endcomment %}
29
+
30
+ {%- assign project = include.data | default: page.with_project_data | default: site.data.project | default: site.data.base.project %}
31
+
32
+ {% assign project_class = project.class | default: "flex-column text-bg-dark bg-image" %}
33
+ {% assign project_screenshot = project.screenshot | default: nil %}
34
+ {% assign project_screenshot_class = project.screenshot_class | default: nil %}
35
+ {% assign project_screenshot_alt = project.screenshot_alt | default: nil %}
36
+ {% assign project_image = project.image | default: nil %}
37
+ {% assign project_image_alt = project.image_alt | default: nil %}
38
+ {% assign project_image_class = project.image_class | default: "img-fluid mb-3" %}
39
+ {% assign project_image_style = project.image_style | default: nil %}
40
+ {% assign project_icon = project.icon | default: nil %}
41
+ {% assign project_icon_class = project.icon_class | default: "display-3 fw-bold mb-1" %}
42
+ {% assign project_name = project.name | default: nil %}
43
+ {% assign project_name_class = project.name_class | default: "display-3 fw-bold mb-1" %}
44
+ {% assign project_description = project.description | default: nil %}
45
+ {% assign project_description_class = project.description_class | default: "lead mb-3 text-center" %}
46
+ {% assign project_actions = project.actions | default: nil %}
47
+ {% assign project_actions_class = project.actions_class | default: "mb-3" %}
48
+ {% assign project_actions_btn_class = project.actions_btn_class | default: "btn text-nowrap m-1 btn-" %}
49
+ {% assign project_resources = project.resources | default: nil %}
50
+ {% assign project_resources_class = project.resources_class | default: "gap-2 d-md-flex justify-content-lg-center bg-dark p-2 rounded-top" %}
51
+ {% assign project_resources_btn_class = project.resources_btn_class | default: "btn text-start text-nowrap btn-dark" %}
52
+
53
+ <div class="d-flex{% if project_class != "" %} {{ project_class }}{% endif %}">
54
+ <div class="container pt-5">
55
+ {% include base/card.html.liquid
56
+ class = "flex-column align-items-center pb-3"
57
+ color = "primary"
58
+ screenshot = project_screenshot
59
+ screenshot_class = project_screenshot_class
60
+ screenshot_alt = project_screenshot_alt
61
+ image = project_image
62
+ image_class = project_image_class
63
+ image_style = project_image_style
64
+ image_alt = project_image_alt
65
+ icon = project_icon
66
+ icon_class = project_icon_class
67
+ name = project_name
68
+ name_class = project_name_class
69
+ description = project_description
70
+ description_class = project_description_class
71
+ actions = project_actions
72
+ actions_btn_class = project_actions_btn_class
73
+ actions_class = project_actions_class
74
+ %}
75
+ {%- if project_resources.size > 0 %}
76
+ <div class="d-grid{% if project_resources_class %} {{ project_resources_class }}{% endif %}">
77
+ {%- for resource in project_resources %}
78
+ {% include base/link.html.liquid
79
+ class = project_resources_btn_class
80
+ role = "button"
81
+ name = resource.name
82
+ link = resource.link
83
+ icon = resource.icon
84
+ icon_position = resource.icon_position
85
+ %}
86
+ {%- endfor %}
87
+ </div>
88
+ {%- endif %}
89
+ </div>
90
+ </div>
@@ -0,0 +1,59 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Script Initialization Component
4
+ Purpose: Loads Bootstrap and initializes tooltips. Conditionally includes
5
+ optional libraries (Font Awesome, Highlight.js, DataTables, Back-to-Top).
6
+ Place before closing </body> tag.
7
+ ================================================================================
8
+
9
+ Strategic Design Logic:
10
+ - Bootstrap loading: core JS functionality
11
+ - Tooltip initialization: data-bs-toggle support
12
+ - Optional library includes: conditional loading
13
+ - Performance: deferred to end of body
14
+ - Vanilla JavaScript: no jQuery required
15
+
16
+ Required Inputs:
17
+ None - loads common libraries automatically
18
+
19
+ Conditional Inputs (from page front matter):
20
+ - page.with_fontawesome: Load Font Awesome JS (boolean)
21
+ - page.with_highlight: Load Highlight.js (boolean)
22
+ - page.with_datatable: Load DataTables (boolean)
23
+ - page.with_backtotop: Load Back-to-Top (boolean)
24
+ - page.with_copyvalue: Load Copy Value functionality (boolean)
25
+
26
+ Bootstrap Tooltip Initialization:
27
+ ```javascript
28
+ const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
29
+ const tooltipList = [...tooltipTriggerList].map(el => new bootstrap.Tooltip(el));
30
+ ```
31
+
32
+ Dependencies:
33
+ - Bootstrap JS: included locally
34
+ - Other libraries: loaded via CDN (conditional)
35
+ ================================================================================
36
+ {% endcomment %}
37
+
38
+ <script src="{{ site.baseurl }}/assets/js/bootstrap.bundle.min.js"></script>
39
+ <script src="{{ site.baseurl }}/assets/js/base/init-tooltips.min.js"></script>
40
+
41
+ {% if page.with_fontawesome -%}
42
+ {% include base/fontawesome.html.liquid type="script" %}
43
+ {% endif %}
44
+
45
+ {% if page.with_highlight %}
46
+ {% include base/highlight.html.liquid type="script" %}
47
+ {% endif -%}
48
+
49
+ {% if page.with_datatable %}
50
+ {% include base/datatable.html.liquid type="script" %}
51
+ {% endif %}
52
+
53
+ {% if page.with_backtotop -%}
54
+ {% include base/backtotop.html.liquid %}
55
+ {% endif %}
56
+
57
+ {% if page.with_copyvalue -%}
58
+ {% include base/copyvalue.html.liquid %}
59
+ {% endif %}
@@ -0,0 +1,65 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Shortcuts Navigation Component
4
+ Purpose: Renders footer navigation shortcuts grouped by category. Displays
5
+ sections of related links in multi-column layout suitable for footer placement.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Grouped navigation: categories of related links
10
+ - Column layout: multi-column footer display
11
+ - Filtered items: only shows items with visible_on='footer'
12
+ - Reusable link component: consistent styling
13
+ - Empty state handling: no output if no items
14
+ - Category headings: uppercase section titles
15
+
16
+ Required Inputs (from data objects):
17
+ - navitems[]: Array with visible_on='footer'
18
+
19
+ Optional Inputs (from include):
20
+ - data: Shortcuts configuration object
21
+
22
+ Data Source Hierarchy (in priority order):
23
+ 1. include.data - Explicitly passed configuration
24
+ 2. page.with_shortcut_data - Page front matter
25
+ 3. site.data.shortcut - Site configuration
26
+ 4. site.data.base.shortcut - Theme defaults
27
+
28
+ Conditional Logic:
29
+ - shortcut_navitems.size > 0: Only render if items exist
30
+ - Loop through sections and their menus
31
+ - Each item rendered as link via link component
32
+ - Color: "light" (suitable for dark footers)
33
+ ================================================================================
34
+ {% endcomment %}
35
+
36
+ {%- assign shortcut = include.data
37
+ | default: page.with_shortcut_data
38
+ | default: page.with_navbar_data
39
+ | default: site.data.shortcut
40
+ | default: site.data.navbar
41
+ | default: site.data.base.shortcut
42
+ | default: site.data.base.navbar %}
43
+ {%- assign shortcut_navitems = shortcut.navitems | where: "visible_on", "footer" %}
44
+
45
+ {%- comment %} === Presentation === {% endcomment %}
46
+ {% if shortcut_navitems.size > 0 %}
47
+ <div class="d-flex flex-wrap justify-content-center m-2">
48
+ {% for section in shortcut_navitems -%}
49
+ <div class="px-4 text-center">
50
+ <div class="h6">{{ section.name | upcase }}</div>
51
+ <ul class="px-4 mb-4">
52
+ {% for item in section.menu -%}
53
+ <li class="list-unstyled my-1">
54
+ {% include base/link.html.liquid
55
+ name = item.name
56
+ link = item.link
57
+ color = "light"
58
+ %}
59
+ </li>
60
+ {% endfor %}
61
+ </ul>
62
+ </div>
63
+ {% endfor %}
64
+ </div>
65
+ {% endif %}
@@ -0,0 +1,59 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Social Links Component
4
+ Purpose: Renders a collection of social media and external links as styled
5
+ buttons with icons. Includes optional site description header.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Multi-level data source hierarchy for flexible configuration
10
+ - Site description display for context/branding purposes
11
+ - Link rendering via reusable link component with icon support
12
+ - Icon-based visual identification for different platforms
13
+ - Accessibility-first approach with proper ARIA labels
14
+ - Centered layout for prominent footer or banner placement
15
+
16
+ Required Inputs (from data objects):
17
+ - link: URL for the social media or external platform
18
+ - icon: Icon class for Font Awesome (e.g., 'fa-brands fa-github')
19
+ - name: Platform name for accessibility label (e.g., 'GitHub')
20
+
21
+ Optional Inputs (from include):
22
+ - data: Array of social link objects (overrides all fallbacks)
23
+
24
+ Optional Inputs (from site configuration):
25
+ - site.description: Brief site description displayed above social links
26
+
27
+ Data Source Hierarchy (in priority order):
28
+ 1. include.data - Explicitly passed social link array
29
+ 2. page.with_social_data - Page front matter configuration
30
+ 3. site.data.social - Site-specific social configuration
31
+ 4. site.data.base.social - Theme default social links
32
+
33
+ Conditional Logic:
34
+ - Site description displays only if site.description is defined
35
+ - Loops through all social links in resolved data source
36
+ - Each link rendered with consistent button styling
37
+ ================================================================================
38
+ {% endcomment %}
39
+
40
+ {%- assign social = include.data | default: page.with_social_data | default: site.data.social | default: site.data.base.social %}
41
+
42
+ {%- comment %} === Presentation === {% endcomment %}
43
+ {% if site.description %}
44
+ <div class="lead text-center mb-2">{{ site.description }}</div>
45
+ {% endif %}
46
+ <div class="text-center">
47
+ {%- for item in social -%}
48
+ {%- include base/link.html.liquid
49
+ class = "btn btn-primary ms-0 m-2 fs-5"
50
+ link = item.link
51
+ role = "button"
52
+ icon = item.icon
53
+ aria_label = item.name
54
+ data_bs_toggle = "tooltip"
55
+ data_bs_title = item.name
56
+ data_bs_placement = "bottom"
57
+ %}
58
+ {%- endfor %}
59
+ </div>
@@ -0,0 +1,52 @@
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 title_data = include.data | default: page.with_title_data | default: site.data.title | default: site.data.base.title %}
38
+ {%- assign title_schema = site.data.base.title_schema.properties["with_title_data"].properties %}
39
+
40
+ {%- comment %} === Presentation === {% endcomment %}
41
+ {%- assign class = title_data.class | default: title_schema["class"].default %}
42
+ {%- assign title = title_data.title | default: page.title %}
43
+ {%- assign title_class = title_data.title_class | default: title_schema["title_class"].default %}
44
+ {%- assign title_lead = title_data.title_lead | default: page.title_lead %}
45
+ {%- assign title_lead_class = title_data.title_lead_class | default: title_schema["title_lead_class"].default %}
46
+
47
+ <div class="{{ class }}">
48
+ <div class="{{ title_class }}">{{ title }}</div>
49
+ {% if title_lead != "" %}
50
+ <div class="{{ title_lead_class }}">{{ title_lead }}</div>
51
+ {% endif %}
52
+ </div>
@@ -0,0 +1,91 @@
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
+ 1. include.data - Explicitly passed configuration
37
+ 2. page.with_toc_data - Page front matter
38
+ 3. site.data.toc - Site configuration
39
+ 4. site.data.base.toc - Theme defaults
40
+ ================================================================================
41
+ {% endcomment %}
42
+
43
+ {%- assign toc = include.data | default: page.with_toc_data | default: site.data.toc | default: site.data.base.toc %}
44
+ {%- assign toc_schema = site.data.base.toc_schema.properties["with_toc_data"].properties %}
45
+
46
+ {%- comment %} === Configuration properties === {% endcomment %}
47
+ {%- assign class = toc.class | default: toc_schema["class"].default %}
48
+ {%- assign id = toc.id | default: toc_schema["id"].default | default: "page-toc" %}
49
+ {%- assign item_class = toc.item_class | default: toc_schema["item_class"].default | default: "my-2" %}
50
+ {%- assign anchor_class = toc.anchor_class | default: toc_schema["anchor_class"].default | default: site.converter_link.default_link_classes %}
51
+ {%- assign h_min = toc.h_min | default: toc_schema["h_min"].default %}
52
+ {%- assign h_max = toc.h_max | default: toc_schema["h_max"].default %}
53
+ {%- assign ordered = toc.ordered | default: toc_schema["ordered"].default %}
54
+ {%- assign submenu_class = toc.submenu_class | default: toc_schema["submenu_class"].default %}
55
+ {%- assign base_url = toc.base_url | default: toc_schema["base_url"].default %}
56
+ {%- assign sanitize = toc.sanitize | default: toc_schema["sanitize"].default %}
57
+ {%- assign skip_no_ids = toc.skip_no_ids | default: toc_schema["skip_no_ids"].default %}
58
+ {%- assign flat_toc = toc.flat_toc | default: toc_schema["flat_toc"].default %}
59
+
60
+ {%- comment %} === Presentation === {% endcomment %}
61
+
62
+ {%- comment %} --- HTML --- {% endcomment %}
63
+ <div class="accordion shadow-sm" id="pageToc">
64
+ <div class="accordion-item">
65
+ <div class="accordion-header" id="flush-headingOne">
66
+ <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
67
+ <i class="fa-solid fa-list"></i>
68
+ <span class="mx-3 fw-bold">On this page</span>
69
+ </button>
70
+ </div>
71
+ <div id="flush-collapseOne" class="accordion-collapse collapse" data-bs-parent="#pageToc">
72
+ <div class="accordion-body small">
73
+ {%- include base/toc_generator.html.liquid
74
+ id=id
75
+ html=content
76
+ class=class
77
+ item_class=item_class
78
+ anchor_class=anchor_class
79
+ h_min=h_min
80
+ h_max=h_max
81
+ ordered=ordered
82
+ submenu_class=submenu_class
83
+ base_url=base_url
84
+ sanitize=sanitize
85
+ skip_no_ids=skip_no_ids
86
+ flat_toc=flat_toc
87
+ %}
88
+ </div>
89
+ </div>
90
+ </div>
91
+ </div>
@@ -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,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>