jekyll-theme-centos 2.52.0.beta.56 → 2.52.0.beta.57
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.
- checksums.yaml +4 -4
- data/_config.yml +1 -1
- data/_data/base/backtotop_schema.yml +6 -0
- data/_data/base/datatable_schema.yml +3 -3
- data/_data/base/head_schema.yml +19 -0
- data/_data/base/heading_anchor.yml +1 -3
- data/_data/base/heading_anchor_schema.yml +1 -1
- data/_data/base/highlight_schema.yml +30 -0
- data/_data/base/ogp.yml +23 -0
- data/_data/base/ogp_schema.yml +14 -22
- data/_includes/base/backtotop.html.liquid +10 -2
- data/_includes/base/copyvalue.html.liquid +10 -1
- data/_includes/base/datatable.html.liquid +8 -3
- data/_includes/base/fontawesome.html.liquid +2 -2
- data/_includes/base/{partials/footer.html.liquid → footer.html.liquid} +2 -2
- data/_includes/base/{partials/head.html.liquid → head.html.liquid} +54 -14
- data/_includes/base/heading_anchor.html.liquid +8 -3
- data/_includes/base/highlight.html.liquid +14 -9
- data/_includes/base/{partials/navbar.html.liquid → navbar.html.liquid} +3 -3
- data/_includes/base/navindex.html.liquid +2 -2
- data/_includes/base/ogp.html.liquid +58 -56
- data/_layouts/base/default.html +7 -10
- data/_sass/base/_customization.scss +27 -13
- data/assets/img/base/example-ogp-image.png +0 -0
- data/assets/img/base/example-ogp-image.svg +297 -0
- data/assets/img/base/page-layout-default.png +0 -0
- data/assets/img/base/page-layout-default.svg +4 -4
- data/assets/img/base/page-with-ogp.png +0 -0
- data/assets/img/base/page-with-ogp.svg +333 -300
- data/assets/img/centos-social-share.png +0 -0
- data/assets/js/base/backtotop.js +7 -10
- data/assets/js/base/copyvalue.js +96 -94
- data/assets/js/base/datatable.js +28 -42
- data/assets/js/base/heading-anchor.js +53 -53
- data/assets/js/base/highlight.js +9 -3
- data/assets/js/base/init-tooltips.js +10 -4
- metadata +15 -13
- data/_data/base/partials/head_schema.yml +0 -47
- data/_includes/base/partials/script.html.liquid +0 -47
- /data/_data/base/{partials/content.yml → content.yml} +0 -0
- /data/_data/base/{partials/content_schema.yml → content_schema.yml} +0 -0
- /data/_data/base/{partials/footer.yml → footer.yml} +0 -0
- /data/_data/base/{partials/footer_schema.yml → footer_schema.yml} +0 -0
- /data/_data/base/{partials/navbar.yml → navbar.yml} +0 -0
- /data/_data/base/{partials/navbar_schema.yml → navbar_schema.yml} +0 -0
- /data/_data/base/{partials/script_schema.yml → script_schema.yml} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 29e3de8f157f7b87508708bbdb18de63f8bd44871d0feca1c8f867a299e9aa46
|
|
4
|
+
data.tar.gz: 2012b819f38f4ebcf5e3bd300be8a3faea9f0b46916b2a94f289b1ace45b7583
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0e3fed1004fc6820dac94c797fd5a4cebd99d967a088797e2f59fd328be508c382fee93d30c5dd66a6f17d953204b8ed344d68c300f25289e67c3bb1a90dd1ae
|
|
7
|
+
data.tar.gz: 741b4f8ad83b80b1ebc127834e4a19d2051191a21c8af6b074b7f8cf5e7cca028feda26631818bcb923e085835e9908d6f161fac7b3aaad5e82d1a0f9d368faf
|
data/_config.yml
CHANGED
|
@@ -29,6 +29,12 @@ properties:
|
|
|
29
29
|
description: >-
|
|
30
30
|
Specifies the version of the Back to Top addon to load from the CDN
|
|
31
31
|
(e.g., `7.2.1`).
|
|
32
|
+
script_integrity:
|
|
33
|
+
type: string
|
|
34
|
+
default: "sha384-vPjvei7c1a3IpCr0kkDEOMRmlCHcv8REJw1B2eKJM55swier62xiYRVistfMKEUj"
|
|
35
|
+
description: >-
|
|
36
|
+
SRI hash for the vanilla-back-to-top script loaded from the CDN.
|
|
37
|
+
Must be updated when `version` changes.
|
|
32
38
|
diameter:
|
|
33
39
|
type: string
|
|
34
40
|
default: "56"
|
|
@@ -18,21 +18,21 @@ properties:
|
|
|
18
18
|
properties:
|
|
19
19
|
version:
|
|
20
20
|
type: string
|
|
21
|
-
default: "v/bs5/jq-3.7.0/dt-2.3.
|
|
21
|
+
default: "v/bs5/jq-3.7.0/dt-2.3.8"
|
|
22
22
|
description: >-
|
|
23
23
|
The specific version and dependencies string for the compressed
|
|
24
24
|
and minified DataTables distribution (e.g., `v/bs5/jq-3.7.0/dt-2.3.5`).
|
|
25
25
|
This value is sourced from the DataTables [download page](https://datatables.net/download/).
|
|
26
26
|
css_integrity:
|
|
27
27
|
type: string
|
|
28
|
-
default: "sha384-
|
|
28
|
+
default: "sha384-nD9P196GmYuiIASpxI7+7/0LqD6BBA74CfgIOSQUo7brmKKeph8lSEMm2sGgSAvK"
|
|
29
29
|
description: >-
|
|
30
30
|
The Subresource Integrity (SRI) CSS checksum (`sha384-...`) for the
|
|
31
31
|
specific DataTables version used. This is essential for ensuring the integrity
|
|
32
32
|
of the loaded CSS resource.
|
|
33
33
|
script_integrity:
|
|
34
34
|
type: string
|
|
35
|
-
default: "sha384-
|
|
35
|
+
default: "sha384-pszF7QvU8ChuuhQBJGIvzVEcojfpYqQOVG2PaXES4M4Mcn+1CqfQ4r1b/mpdtn/6"
|
|
36
36
|
description: >-
|
|
37
37
|
The Subresource Integrity (SRI) JavaScript checksum (`sha384-...`)
|
|
38
38
|
for the specific DataTables version used. This ensures the integrity of
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
title: Head Component Configuration
|
|
2
|
+
description: >-
|
|
3
|
+
Schema for the head component. The head component is a layout coordinator
|
|
4
|
+
that assembles the HTML <head> section by conditionally including
|
|
5
|
+
sub-components (OGP, Font Awesome, Highlight.js, DataTables, Breaking News,
|
|
6
|
+
Back to Top, Copy Value, Heading Anchor). Each sub-component is configured
|
|
7
|
+
through its own schema. Only properties exclusive to the head component
|
|
8
|
+
itself are defined here.
|
|
9
|
+
type: object
|
|
10
|
+
properties:
|
|
11
|
+
theme_color:
|
|
12
|
+
type: string
|
|
13
|
+
default: "#A54C93"
|
|
14
|
+
description: >-
|
|
15
|
+
Browser chrome color for mobile browsers (Chrome on Android, Safari on iOS).
|
|
16
|
+
Used by the `<meta name="theme-color">` tag. Should match `theme_color`
|
|
17
|
+
in the site's `site.webmanifest`. Resolved from `page.theme_color` first,
|
|
18
|
+
then `site.theme_color`, then this default.
|
|
19
|
+
additionalProperties: false
|
|
@@ -17,7 +17,7 @@ properties:
|
|
|
17
17
|
icon:
|
|
18
18
|
type: string
|
|
19
19
|
description: Font Awesome icon classes applied to the anchor icon element.
|
|
20
|
-
default: "fa-solid fa-
|
|
20
|
+
default: "fa-solid fa-hashtag"
|
|
21
21
|
icon_size:
|
|
22
22
|
type: string
|
|
23
23
|
description: Font Awesome size modifier appended after the icon classes.
|
|
@@ -30,6 +30,36 @@ properties:
|
|
|
30
30
|
description: >-
|
|
31
31
|
The specific version of the Highlight.js library being loaded
|
|
32
32
|
(e.g., `11.11.1`).
|
|
33
|
+
css_integrity:
|
|
34
|
+
type: string
|
|
35
|
+
default: "sha384-4Y0nObtF3CbKnh+lpzmAVdAMtQXl+ganWiiv73RcGVdRdfVIya8Cao1C8ZsVRRDz"
|
|
36
|
+
description: >-
|
|
37
|
+
SRI hash for the Highlight.js theme CSS loaded from cdnjs. Must be
|
|
38
|
+
updated when `version` or `theme` changes.
|
|
39
|
+
script_integrity:
|
|
40
|
+
type: string
|
|
41
|
+
default: "sha384-RH2xi4eIQ/gjtbs9fUXM68sLSi99C7ZWBRX1vDrVv6GQXRibxXLbwO2NGZB74MbU"
|
|
42
|
+
description: >-
|
|
43
|
+
Subresource Integrity (SRI) hash for the Highlight.js script loaded
|
|
44
|
+
from cdnjs. Must be updated when `version` changes.
|
|
45
|
+
copy_version:
|
|
46
|
+
type: string
|
|
47
|
+
default: "1.0.6"
|
|
48
|
+
description: >-
|
|
49
|
+
Version of the highlightjs-copy plugin loaded from unpkg
|
|
50
|
+
(e.g., `1.0.6`).
|
|
51
|
+
copy_script_integrity:
|
|
52
|
+
type: string
|
|
53
|
+
default: "sha384-0/jh9+ifwJ5mqtDZ+DWdwgFjZ8I4HIfXqaWJi2mdeAwy8aUPlw5dTYNsqAqNE4yD"
|
|
54
|
+
description: >-
|
|
55
|
+
SRI hash for the highlightjs-copy plugin script. Must be updated
|
|
56
|
+
when `copy_version` changes.
|
|
57
|
+
copy_css_integrity:
|
|
58
|
+
type: string
|
|
59
|
+
default: "sha384-jx4j2QNE8PcYHQikjfTfY6TM0sYVodTr0OGqUfAR6bKYJBgW91lTieqkghTu9+Kk"
|
|
60
|
+
description: >-
|
|
61
|
+
SRI hash for the highlightjs-copy plugin stylesheet. Must be updated
|
|
62
|
+
when `copy_version` changes.
|
|
33
63
|
copy_button_icons:
|
|
34
64
|
type: object
|
|
35
65
|
description: >-
|
data/_data/base/ogp.yml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
locale: en_US
|
|
3
|
+
og:
|
|
4
|
+
type: website
|
|
5
|
+
title: true
|
|
6
|
+
url: true
|
|
7
|
+
description: true
|
|
8
|
+
image:
|
|
9
|
+
url: true
|
|
10
|
+
alt: The CentOS Project
|
|
11
|
+
type: image/png
|
|
12
|
+
width: 1200
|
|
13
|
+
height: 630
|
|
14
|
+
twitter:
|
|
15
|
+
card: summary_large_image
|
|
16
|
+
site: "@CentOS"
|
|
17
|
+
creator: "@CentOS"
|
|
18
|
+
title: true
|
|
19
|
+
url: true
|
|
20
|
+
description: true
|
|
21
|
+
image:
|
|
22
|
+
url: true
|
|
23
|
+
alt: The CentOS Project
|
data/_data/base/ogp_schema.yml
CHANGED
|
@@ -59,7 +59,7 @@ properties:
|
|
|
59
59
|
description: The height of the image in pixels via the `og:image:height` tag.
|
|
60
60
|
alt:
|
|
61
61
|
type: string
|
|
62
|
-
default: "
|
|
62
|
+
default: "The CentOS Project"
|
|
63
63
|
description: A description of the image for accessibility via the `og:image:alt` tag.
|
|
64
64
|
required:
|
|
65
65
|
- url
|
|
@@ -126,27 +126,13 @@ properties:
|
|
|
126
126
|
default: summary_large_image
|
|
127
127
|
description: Defines the Twitter Card type via the `twitter:card` tag (e.g., `summary`, `summary_large_image`).
|
|
128
128
|
site:
|
|
129
|
-
type:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
id:
|
|
133
|
-
type: string
|
|
134
|
-
default: "@CentOS"
|
|
135
|
-
description: The site's Twitter handle (e.g., `@CentOS`).
|
|
136
|
-
required:
|
|
137
|
-
- id
|
|
138
|
-
additionalProperties: false
|
|
129
|
+
type: string
|
|
130
|
+
default: "@CentOS"
|
|
131
|
+
description: The website's Twitter handle via the `twitter:site` tag (e.g., `@CentOS`).
|
|
139
132
|
creator:
|
|
140
|
-
type:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
id:
|
|
144
|
-
type: string
|
|
145
|
-
default: "@CentOS"
|
|
146
|
-
description: The creator's Twitter handle (e.g., `@CentOS`).
|
|
147
|
-
required:
|
|
148
|
-
- id
|
|
149
|
-
additionalProperties: false
|
|
133
|
+
type: string
|
|
134
|
+
default: "@CentOS"
|
|
135
|
+
description: The content creator's Twitter handle via the `twitter:creator` tag (e.g., `@CentOS`).
|
|
150
136
|
image:
|
|
151
137
|
type: object
|
|
152
138
|
description: Configuration for the main image used in the Twitter Card (`twitter:image`).
|
|
@@ -175,7 +161,7 @@ properties:
|
|
|
175
161
|
description: The height of the image in pixels.
|
|
176
162
|
alt:
|
|
177
163
|
type: string
|
|
178
|
-
default: "
|
|
164
|
+
default: "The CentOS Project"
|
|
179
165
|
description: The image description for accessibility.
|
|
180
166
|
required:
|
|
181
167
|
- url
|
|
@@ -183,4 +169,10 @@ properties:
|
|
|
183
169
|
- height
|
|
184
170
|
additionalProperties: false
|
|
185
171
|
additionalProperties: false
|
|
172
|
+
locale:
|
|
173
|
+
type: string
|
|
174
|
+
default: "en_US"
|
|
175
|
+
description: >-
|
|
176
|
+
Locale of the content in language_TERRITORY format (e.g., `en_US`, `es_ES`).
|
|
177
|
+
Used by the `og:locale` tag. Should match the site's primary language.
|
|
186
178
|
additionalProperties: false
|
|
@@ -47,19 +47,27 @@ Data Source Hierarchy (priority):
|
|
|
47
47
|
{%- comment %} --- Defaults --- {% endcomment %}
|
|
48
48
|
{%- assign backtotop_cdn = with_backtotop_data.cdn | default: with_backtotop_schema.cdn.default %}
|
|
49
49
|
{%- assign backtotop_version = with_backtotop_data.version | default: with_backtotop_schema.version.default %}
|
|
50
|
+
{%- assign backtotop_script_integrity = with_backtotop_data.script_integrity | default: with_backtotop_schema.script_integrity.default %}
|
|
50
51
|
{%- assign backtotop_diameter = with_backtotop_data.diameter | default: with_backtotop_schema.diameter.default %}
|
|
51
52
|
{%- assign backtotop_background_color = with_backtotop_data.background_color | default: with_backtotop_schema.background_color.default %}
|
|
52
53
|
{%- assign backtotop_text_color = with_backtotop_data.text_color | default: with_backtotop_schema.text_color.default %}
|
|
53
54
|
|
|
54
55
|
{%- comment %} --- HTML --- {% endcomment %}
|
|
55
56
|
<!-- Load vanilla-back-to-top library from CDN -->
|
|
56
|
-
<script src="{{ backtotop_cdn }}/vanilla-back-to-top@{{ backtotop_version }}/dist/vanilla-back-to-top.min.js"></script>
|
|
57
|
+
<script src="{{ backtotop_cdn }}/vanilla-back-to-top@{{ backtotop_version }}/dist/vanilla-back-to-top.min.js" integrity="{{ backtotop_script_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
57
58
|
|
|
58
59
|
<!-- Initialize back-to-top button with configuration via data attributes -->
|
|
59
60
|
<script id="centos-backtop"
|
|
61
|
+
{%- if with_backtotop_data.diameter %}
|
|
60
62
|
data-diameter="{{ backtotop_diameter }}"
|
|
63
|
+
{%- endif %}
|
|
64
|
+
{%- if with_backtotop_data.background_color %}
|
|
61
65
|
data-background-color="{{ backtotop_background_color }}"
|
|
66
|
+
{%- endif %}
|
|
67
|
+
{%- if with_backtotop_data.text_color %}
|
|
62
68
|
data-text-color="{{ backtotop_text_color }}"
|
|
63
|
-
|
|
69
|
+
{%- endif %}
|
|
70
|
+
src="{{ site.baseurl }}/assets/js/base/backtotop.min.js"
|
|
71
|
+
defer></script>
|
|
64
72
|
|
|
65
73
|
{%- endif %}
|
|
@@ -64,10 +64,19 @@ Bootstrap 5, FontAwesome 6+, Clipboard API (modern browsers)
|
|
|
64
64
|
{%- comment %} --- HTML --- {% endcomment %}
|
|
65
65
|
<!-- Load Copy Value functionality with configuration via data attributes -->
|
|
66
66
|
<script id="centos-copyvalue"
|
|
67
|
+
{%- if with_copyvalue_data.reset_delay %}
|
|
67
68
|
data-reset-delay="{{ copyvalue_reset_delay }}"
|
|
69
|
+
{%- endif %}
|
|
70
|
+
{%- if with_copyvalue_data.checkmark_path %}
|
|
68
71
|
data-checkmark-path="{{ copyvalue_checkmark_path }}"
|
|
72
|
+
{%- endif %}
|
|
73
|
+
{%- if with_copyvalue_data.checkmark_viewbox %}
|
|
69
74
|
data-checkmark-viewbox="{{ copyvalue_checkmark_viewbox }}"
|
|
75
|
+
{%- endif %}
|
|
76
|
+
{%- if with_copyvalue_data.success_message %}
|
|
70
77
|
data-success-message="{{ copyvalue_success_message }}"
|
|
71
|
-
|
|
78
|
+
{%- endif %}
|
|
79
|
+
src="{{ site.baseurl }}/assets/js/base/copyvalue.min.js"
|
|
80
|
+
defer></script>
|
|
72
81
|
|
|
73
82
|
{%- endif %}
|
|
@@ -52,18 +52,23 @@ Data Source Hierarchy (priority):
|
|
|
52
52
|
{%- assign datatable_length_menu = with_datatable_data.length_menu | default: with_datatable_schema.length_menu.default %}
|
|
53
53
|
|
|
54
54
|
{%- capture html_datatable_head %}
|
|
55
|
-
<link href="https://cdn.datatables.net/{{ datatable_version }}/datatables.min.css" rel="stylesheet" integrity="{{ datatable_css_integrity }}" crossorigin="anonymous" />
|
|
55
|
+
<link href="https://cdn.datatables.net/{{ datatable_version }}/datatables.min.css" rel="stylesheet" integrity="{{ datatable_css_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
56
56
|
{%- endcapture %}
|
|
57
57
|
|
|
58
58
|
{%- capture html_datatable_script %}
|
|
59
59
|
<!-- DataTables Library -->
|
|
60
|
-
<script src="https://cdn.datatables.net/{{ datatable_version }}/datatables.min.js" integrity="{{ datatable_script_integrity }}" crossorigin="anonymous"></script>
|
|
60
|
+
<script src="https://cdn.datatables.net/{{ datatable_version }}/datatables.min.js" integrity="{{ datatable_script_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
61
61
|
|
|
62
62
|
<!-- Initialize DataTables with configuration via data attributes -->
|
|
63
63
|
<script id="centos-datatable"
|
|
64
|
+
{%- if with_datatable_data.page_length %}
|
|
64
65
|
data-page-length="{{ datatable_page_length }}"
|
|
66
|
+
{%- endif %}
|
|
67
|
+
{%- if with_datatable_data.length_menu %}
|
|
65
68
|
data-length-menu='{{ datatable_length_menu | split: "," | jsonify }}'
|
|
66
|
-
|
|
69
|
+
{%- endif %}
|
|
70
|
+
src="{{ site.baseurl }}/assets/js/base/datatable.min.js"
|
|
71
|
+
defer></script>
|
|
67
72
|
{%- endcapture %}
|
|
68
73
|
|
|
69
74
|
{%- comment %} --- HTML --- {% endcomment %}
|
|
@@ -15,7 +15,7 @@ Design Logic:
|
|
|
15
15
|
Optional Inputs:
|
|
16
16
|
- type: "head" for CSS, "script" for JavaScript
|
|
17
17
|
- version: Font Awesome version (e.g., "6.4.0")
|
|
18
|
-
- cdn: CDN base URL (default:
|
|
18
|
+
- cdn: CDN base URL (default: cdnjs.cloudflare.com)
|
|
19
19
|
- css_bundle_name, js_bundle_name: Bundle identifiers
|
|
20
20
|
- css_bundle_integrity, js_bundle_integrity: SRI hashes
|
|
21
21
|
- data: Font Awesome configuration object
|
|
@@ -57,7 +57,7 @@ Data Source Hierarchy (priority):
|
|
|
57
57
|
{%- endcapture %}
|
|
58
58
|
|
|
59
59
|
{%- capture html_fontawesome_script %}
|
|
60
|
-
<script src="{{ fontawesome_cdn }}/{{ fontawesome_version }}/js/{{ fontawesome_js_bundle_name }}.min.js" integrity="{{ fontawesome_js_bundle_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
60
|
+
<script src="{{ fontawesome_cdn }}/{{ fontawesome_version }}/js/{{ fontawesome_js_bundle_name }}.min.js" integrity="{{ fontawesome_js_bundle_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
61
61
|
{%- endcapture %}
|
|
62
62
|
|
|
63
63
|
{%- comment %} --- HTML --- {% endcomment %}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
{%- assign with_footer_data = include.data
|
|
6
6
|
| default: page.with_footer_data
|
|
7
7
|
| default: site.data.footer
|
|
8
|
-
| default: site.data.base.
|
|
8
|
+
| default: site.data.base.footer
|
|
9
9
|
%}
|
|
10
10
|
|
|
11
|
-
{%- assign with_footer_schema = site.data.base.
|
|
11
|
+
{%- assign with_footer_schema = site.data.base.footer_schema.properties.with_footer_data.properties %}
|
|
12
12
|
|
|
13
13
|
{%- assign footer_brand_image = with_footer_data.brand_image | default: with_footer_schema.brand_image.default %}
|
|
14
14
|
{%- assign footer_brand_image_class = with_footer_data.brand_image_class | default: with_footer_schema.brand_image_class.default %}
|
|
@@ -6,13 +6,15 @@ icons, fonts, and conditional library includes.
|
|
|
6
6
|
================================================================================
|
|
7
7
|
|
|
8
8
|
Design Logic:
|
|
9
|
-
- Comprehensive meta tags: charset, viewport,
|
|
9
|
+
- Comprehensive meta tags: charset, viewport, referrer policy, description, theme-color
|
|
10
10
|
- Dynamic title generation: page title + site title
|
|
11
|
-
- Favicon support: multiple formats (16x16, 32x32, SVG, Apple Touch)
|
|
12
|
-
- Google Fonts: Montserrat and Source Code Pro
|
|
11
|
+
- Favicon support: multiple formats (16x16, 32x32, SVG with type, Apple Touch)
|
|
12
|
+
- Google Fonts: Montserrat (5 weights) and Source Code Pro (2 weights) via async stylesheet
|
|
13
13
|
- Breakingnews scroll offset: dynamic CSS calculation
|
|
14
|
-
- Conditional includes: OGP,
|
|
14
|
+
- Conditional includes: OGP, Highlight.js, DataTables, FontAwesome (SVG+JS)
|
|
15
15
|
- CSS prioritization: custom stylesheet last for override
|
|
16
|
+
- Script loading: Bootstrap base first (defer), then optional extensions, then UI behaviors
|
|
17
|
+
- Bootstrap preloaded (high-priority fetch); CDN origins preconnected + dns-prefetched per active component
|
|
16
18
|
|
|
17
19
|
Required Inputs:
|
|
18
20
|
- page.title: Current page title
|
|
@@ -20,31 +22,54 @@ Required Inputs:
|
|
|
20
22
|
- site.baseurl: Base URL for asset paths
|
|
21
23
|
|
|
22
24
|
Optional Inputs:
|
|
23
|
-
- page.with_ogp, page.with_fontawesome: Include OGP/Font Awesome (boolean)
|
|
25
|
+
- page.with_ogp, page.with_fontawesome: Include OGP/Font Awesome SVG+JS (boolean)
|
|
24
26
|
- page.with_breakingnews, page.with_highlight: Include breaking news/highlight
|
|
25
27
|
- page.with_datatable: Include DataTables (boolean)
|
|
26
28
|
- page.with_breakingnews_data: Array of breaking news items
|
|
29
|
+
- page.with_backtotop: Include back-to-top button (boolean)
|
|
30
|
+
- page.with_copyvalue: Include copy-to-clipboard behavior (boolean)
|
|
31
|
+
- page.with_heading_anchor: Include heading anchor copy behavior (boolean)
|
|
32
|
+
- page.theme_color, site.theme_color: Override browser chrome color (default: #A54C93)
|
|
27
33
|
================================================================================
|
|
28
34
|
{% endcomment %}
|
|
29
35
|
|
|
30
36
|
<head>
|
|
37
|
+
<meta charset="utf-8" />
|
|
38
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
39
|
+
<meta name="referrer" content="strict-origin-when-cross-origin" />
|
|
31
40
|
{% if page.title == site.title -%}
|
|
32
41
|
<title>{{ page.title }}</title>
|
|
33
42
|
{% else -%}
|
|
34
43
|
<title>{{ page.title }} - {{ site.title }}</title>
|
|
35
44
|
{% endif -%}
|
|
36
|
-
<meta
|
|
37
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
|
|
45
|
+
<meta name="description" content="{{ page.description | default: page.excerpt | default: page.title_lead | default: site.description | strip_html | truncate: 160 }}" />
|
|
38
46
|
{% include base/ogp.html.liquid %}
|
|
39
47
|
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-16.png" sizes="16x16" />
|
|
40
48
|
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-32.png" sizes="32x32" />
|
|
41
|
-
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon.svg" sizes="any" />
|
|
49
|
+
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon.svg" type="image/svg+xml" sizes="any" />
|
|
42
50
|
<link rel="apple-touch-icon" href="{{ site.baseurl }}/assets/icons/apple-touch-icon.png" sizes="180x180" />
|
|
43
51
|
<link rel="manifest" href="{{ site.baseurl }}/site.webmanifest" />
|
|
44
|
-
|
|
52
|
+
{%- assign head_theme_color = page.theme_color | default: site.theme_color | default: '#A54C93' %}
|
|
53
|
+
<meta name="theme-color" content="{{ head_theme_color }}" />
|
|
45
54
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
46
|
-
<link rel="
|
|
47
|
-
<link rel="
|
|
55
|
+
<link rel="dns-prefetch" href="https://fonts.googleapis.com" />
|
|
56
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
57
|
+
<link rel="dns-prefetch" href="https://fonts.gstatic.com" />
|
|
58
|
+
{%- if page.with_fontawesome or page.with_highlight %}
|
|
59
|
+
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin />
|
|
60
|
+
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com" />
|
|
61
|
+
{%- endif %}
|
|
62
|
+
{%- if page.with_highlight or page.with_backtotop %}
|
|
63
|
+
<link rel="preconnect" href="https://unpkg.com" crossorigin />
|
|
64
|
+
<link rel="dns-prefetch" href="https://unpkg.com" />
|
|
65
|
+
{%- endif %}
|
|
66
|
+
{%- if page.with_datatable %}
|
|
67
|
+
<link rel="preconnect" href="https://cdn.datatables.net" crossorigin />
|
|
68
|
+
<link rel="dns-prefetch" href="https://cdn.datatables.net" />
|
|
69
|
+
{%- endif %}
|
|
70
|
+
<link rel="preload" href="{{ site.baseurl }}/assets/js/bootstrap.bundle.min.js" as="script" fetchpriority="high" />
|
|
71
|
+
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Source+Code+Pro:ital,wght@0,400;0,700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" />
|
|
72
|
+
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Source+Code+Pro:ital,wght@0,400;0,700&display=swap" /></noscript>
|
|
48
73
|
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/base/stylesheet.min.css" />
|
|
49
74
|
{%- comment %}
|
|
50
75
|
Dynamic Breaking News Offset CSS
|
|
@@ -87,7 +112,22 @@ Uses CSS custom properties for cleaner, more maintainable dynamic styling.
|
|
|
87
112
|
}
|
|
88
113
|
</style>
|
|
89
114
|
{%- endif %}
|
|
90
|
-
|
|
91
|
-
{%
|
|
92
|
-
{
|
|
115
|
+
|
|
116
|
+
{%- comment %} CSS dependencies {%- endcomment %}
|
|
117
|
+
{%- include base/highlight.html.liquid type="head" %}
|
|
118
|
+
{%- include base/datatable.html.liquid type="head" %}
|
|
119
|
+
|
|
120
|
+
{%- comment %} JavaScript base — Bootstrap must execute before all component scripts {%- endcomment %}
|
|
121
|
+
<script src="{{ site.baseurl }}/assets/js/bootstrap.bundle.min.js" defer></script>
|
|
122
|
+
<script src="{{ site.baseurl }}/assets/js/base/init-tooltips.min.js" defer></script>
|
|
123
|
+
|
|
124
|
+
{%- comment %} JavaScript optional library extensions {%- endcomment %}
|
|
125
|
+
{%- include base/fontawesome.html.liquid type="script" %}
|
|
126
|
+
{%- include base/highlight.html.liquid type="script" %}
|
|
127
|
+
{%- include base/datatable.html.liquid type="script" %}
|
|
128
|
+
|
|
129
|
+
{%- comment %} JavaScript UI behavior components — depend on Bootstrap and FontAwesome SVG+JS {%- endcomment %}
|
|
130
|
+
{%- include base/backtotop.html.liquid %}
|
|
131
|
+
{%- include base/copyvalue.html.liquid %}
|
|
132
|
+
{%- include base/heading_anchor.html.liquid %}
|
|
93
133
|
</head>
|
|
@@ -6,8 +6,8 @@ icons that jekyll-link-decorator injects inside h1–h6 elements. Clicking an
|
|
|
6
6
|
anchor icon copies the full page URL (origin + pathname + fragment) to the
|
|
7
7
|
clipboard, with a transient fa-check icon as visual feedback.
|
|
8
8
|
|
|
9
|
-
Recommended Usage (in
|
|
10
|
-
{
|
|
9
|
+
Recommended Usage (in head.html.liquid):
|
|
10
|
+
{%- include base/heading_anchor.html.liquid %}
|
|
11
11
|
|
|
12
12
|
The heading anchor icons themselves are injected by the jekyll-link-decorator
|
|
13
13
|
Ruby plugin. This include only loads the JavaScript that powers copy behaviour.
|
|
@@ -55,8 +55,13 @@ jekyll-link-decorator gem, FontAwesome 6+, Clipboard API (modern browsers)
|
|
|
55
55
|
{%- comment %} --- HTML --- {% endcomment %}
|
|
56
56
|
<!-- Load Heading Anchor functionality with configuration via data attributes -->
|
|
57
57
|
<script id="centos-heading-anchor"
|
|
58
|
+
{%- if with_heading_anchor_data.reset_delay %}
|
|
58
59
|
data-reset-delay="{{ heading_anchor_reset_delay }}"
|
|
60
|
+
{%- endif %}
|
|
61
|
+
{%- if with_heading_anchor_data.copy_success_message %}
|
|
59
62
|
data-success-message="{{ heading_anchor_success_message }}"
|
|
60
|
-
|
|
63
|
+
{%- endif %}
|
|
64
|
+
src="{{ site.baseurl }}/assets/js/base/heading-anchor.min.js"
|
|
65
|
+
defer></script>
|
|
61
66
|
|
|
62
67
|
{%- endif -%}
|
|
@@ -41,14 +41,19 @@ Data Source Hierarchy (priority):
|
|
|
41
41
|
|
|
42
42
|
{%- if with_highlight %}
|
|
43
43
|
|
|
44
|
-
{%- assign highlight_theme
|
|
45
|
-
{%- assign highlight_version
|
|
46
|
-
{%- assign
|
|
47
|
-
{%- assign
|
|
44
|
+
{%- assign highlight_theme = with_highlight_data.theme | default: with_highlight_schema.theme.default %}
|
|
45
|
+
{%- assign highlight_version = with_highlight_data.version | default: with_highlight_schema.version.default %}
|
|
46
|
+
{%- assign highlight_css_sri = with_highlight_data.css_integrity | default: with_highlight_schema.css_integrity.default %}
|
|
47
|
+
{%- assign highlight_script_sri = with_highlight_data.script_integrity | default: with_highlight_schema.script_integrity.default %}
|
|
48
|
+
{%- assign copy_version = with_highlight_data.copy_version | default: with_highlight_schema.copy_version.default %}
|
|
49
|
+
{%- assign copy_script_sri = with_highlight_data.copy_script_integrity | default: with_highlight_schema.copy_script_integrity.default %}
|
|
50
|
+
{%- assign copy_css_sri = with_highlight_data.copy_css_integrity | default: with_highlight_schema.copy_css_integrity.default %}
|
|
51
|
+
{%- assign copy_icon_svg = with_highlight_data.copy_button_icons.copy.svg | default: with_highlight_schema.copy_button_icons.properties.copy.properties.svg.default %}
|
|
52
|
+
{%- assign success_icon_svg = with_highlight_data.copy_button_icons.success.svg | default: with_highlight_schema.copy_button_icons.properties.success.properties.svg.default %}
|
|
48
53
|
|
|
49
54
|
{%- capture html_highlight_head %}
|
|
50
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ highlight_version }}/styles/{{ highlight_theme | replace_first: 'base16-', 'base16/' | default: 'default' }}.min.css" />
|
|
51
|
-
<link rel="stylesheet" href="https://unpkg.com/highlightjs-copy@
|
|
55
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ highlight_version }}/styles/{{ highlight_theme | replace_first: 'base16-', 'base16/' | default: 'default' }}.min.css" integrity="{{ highlight_css_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
56
|
+
<link rel="stylesheet" href="https://unpkg.com/highlightjs-copy@{{ copy_version }}/dist/highlightjs-copy.min.css" integrity="{{ copy_css_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
52
57
|
<!-- Highlight.js Copy Button Icon Customization (from schema) -->
|
|
53
58
|
<style>
|
|
54
59
|
.hljs-copy-button:not([data-copied="true"])::before {
|
|
@@ -62,10 +67,10 @@ Data Source Hierarchy (priority):
|
|
|
62
67
|
|
|
63
68
|
{%- capture html_highlight_script %}
|
|
64
69
|
<!-- Highlight.js Library and Copy Plugin -->
|
|
65
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ highlight_version }}/highlight.min.js"></script>
|
|
66
|
-
<script src="https://unpkg.com/highlightjs-copy@
|
|
70
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ highlight_version }}/highlight.min.js" integrity="{{ highlight_script_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
71
|
+
<script src="https://unpkg.com/highlightjs-copy@{{ copy_version }}/dist/highlightjs-copy.min.js" integrity="{{ copy_script_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
67
72
|
<!-- Initialize Highlight.js -->
|
|
68
|
-
<script src="{{ site.baseurl }}/assets/js/base/highlight.min.js"></script>
|
|
73
|
+
<script src="{{ site.baseurl }}/assets/js/base/highlight.min.js" defer></script>
|
|
69
74
|
{%- endcapture %}
|
|
70
75
|
|
|
71
76
|
{%- assign type = include.type %}
|
|
@@ -26,7 +26,7 @@ Data Source Hierarchy (priority):
|
|
|
26
26
|
1. include.data
|
|
27
27
|
2. page.with_navbar_data
|
|
28
28
|
3. site.data.navbar
|
|
29
|
-
4. site.data.base.
|
|
29
|
+
4. site.data.base.navbar
|
|
30
30
|
================================================================================
|
|
31
31
|
{% endcomment %}
|
|
32
32
|
|
|
@@ -37,10 +37,10 @@ Data Source Hierarchy (priority):
|
|
|
37
37
|
{%- assign with_navbar_data = include.data
|
|
38
38
|
| default: page.with_navbar_data
|
|
39
39
|
| default: site.data.navbar
|
|
40
|
-
| default: site.data.base.
|
|
40
|
+
| default: site.data.base.navbar
|
|
41
41
|
%}
|
|
42
42
|
|
|
43
|
-
{%- assign with_navbar_schema = site.data.base.
|
|
43
|
+
{%- assign with_navbar_schema = site.data.base.navbar_schema.properties.with_navbar_data.properties %}
|
|
44
44
|
|
|
45
45
|
{%- if with_navbar %}
|
|
46
46
|
|
|
@@ -166,14 +166,14 @@ Data Object Properties:
|
|
|
166
166
|
{%- for item in data %}
|
|
167
167
|
{% comment %} Get component status from site configuration file {% endcomment %}
|
|
168
168
|
{%- assign status_name = "with_" | append: item.component.name %}
|
|
169
|
-
{%- assign status = site.defaults[
|
|
169
|
+
{%- assign status = site.defaults[1].values[status_name] %}
|
|
170
170
|
{% comment %} Render component status {% endcomment %}
|
|
171
171
|
{%- if status == true %}
|
|
172
172
|
{%- assign status_icon = '<span data-bs-toggle="tooltip" data-bs-title="This component is enabled globally and can be used on all site pages. It can be disabled either globally or at a page level."><i class="fa-solid fa-circle-check text-success"></i> Enabled</span>' %}
|
|
173
173
|
{%- elsif status == false %}
|
|
174
174
|
{%- assign status_icon = '<span data-bs-toggle="tooltip" data-bs-title="This component is disabled globally and cannot be used in site pages. It can be enabled either globally or at a page level."><i class="fa-solid fa-circle-minus text-danger"></i> Disabled</span>' %}
|
|
175
175
|
{%- else %}
|
|
176
|
-
{%- assign status_icon = '<span data-bs-toggle="tooltip" data-bs-title="This component is enabled globally and can be used on all site pages. It cannot be disabled."><i class="fa-solid fa-
|
|
176
|
+
{%- assign status_icon = '<span data-bs-toggle="tooltip" data-bs-title="This component is enabled globally and can be used on all site pages. It cannot be disabled."><i class="fa-solid fa-gear"></i> Internal</span>' %}
|
|
177
177
|
{%- endif %}
|
|
178
178
|
{% comment %} Render table rows {% endcomment %}
|
|
179
179
|
<tr>
|