jekyll-theme-centos 2.52.0.beta.103 → 2.52.0.beta.104

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b83d29c9acbb7b4dc2372a6fdac8874392241703bff881a0493da9bfa54c623
4
- data.tar.gz: 11607671da1f262fc820cacdb070be7d43450d356b7c75be4875efffeeb53971
3
+ metadata.gz: 4e809bdd8a4da3bd0a153ea50706b23b0f2f6e92810cd96a242e707e0489f775
4
+ data.tar.gz: a2a06dc72c72f6d142e06760b5df7ac57835766e6a3d12c5ed91bb60909edb45
5
5
  SHA512:
6
- metadata.gz: 728e7780f6d0f9b18b84abb69180bbdff14ac086736b6b1ed6923c9ed14b243c748c5277fe65aa1cb7d5810d432b9c63d6e389cc0bb1dac59f9f953d0132ec0b
7
- data.tar.gz: ac7ff6b0735c0d37b43f3e71476dd0c669f5b98847311ddbbf79c52932e5a5602c928cf32559449b87e2ec8ba681ec48d288330bbf188f6c203e70efd0ce4c1e
6
+ metadata.gz: d73804650ef87a43eb96d1eb05ed2b7e274d5e436f69a5ba50b52dd92d7a97a49a5e4c83e7e82799e8d2eb56d3847b1fe02ce51d0ae53b6904d34e2e2af65b45
7
+ data.tar.gz: c6c4407b5a5c54b3064912898b500d1dd6f59e69ddf2b0c582b939c78ddd5595830bcd42b687b21e357fa009cbed5361480bdc94ad28304922e77b3fad047e89
@@ -46,4 +46,3 @@ properties:
46
46
  - content
47
47
  additionalProperties: false
48
48
  additionalProperties: false
49
- # test
@@ -31,6 +31,7 @@ properties:
31
31
  (e.g., `7.2.1`).
32
32
  script_integrity:
33
33
  type: string
34
+ format: sri-hash
34
35
  default: "sha384-vPjvei7c1a3IpCr0kkDEOMRmlCHcv8REJw1B2eKJM55swier62xiYRVistfMKEUj"
35
36
  description: >-
36
37
  SRI hash for the vanilla-back-to-top script loaded from the CDN.
@@ -27,18 +27,20 @@ properties:
27
27
  [npm releases](https://www.npmjs.com/package/@event-calendar/build).
28
28
  css_integrity:
29
29
  type: string
30
+ format: sri-hash
30
31
  default: "sha384-5OjKEq4IUsR96wC/J0fB3WgMd7ZdsjiPyid1vtIlPlvF/+ejb/2FzrZvaFaBT0mj"
31
32
  description: >-
32
33
  The Subresource Integrity (SRI) CSS checksum (`sha384-...`) for
33
- the specific Event Calendar version used. This is essential for
34
- ensuring the integrity of the loaded CSS resource.
34
+ the specific Event Calendar version used. Must be updated when
35
+ `version` changes.
35
36
  script_integrity:
36
37
  type: string
38
+ format: sri-hash
37
39
  default: "sha384-BCmNKxNY/4PzGJZW9hkN1WE25izUyjMcuzOoWcxqgiDD7iSdNxI4PYVYzaTsvDig"
38
40
  description: >-
39
41
  The Subresource Integrity (SRI) JavaScript checksum (`sha384-...`)
40
- for the specific Event Calendar version used. This ensures the
41
- integrity of the loaded JavaScript file.
42
+ for the specific Event Calendar version used. Must be updated when
43
+ `version` changes.
42
44
  view:
43
45
  type: string
44
46
  default: "dayGridMonth"
@@ -25,26 +25,28 @@ properties:
25
25
  This value is sourced from the DataTables [download page](https://datatables.net/download/).
26
26
  css_integrity:
27
27
  type: string
28
+ format: sri-hash
28
29
  default: "sha384-nD9P196GmYuiIASpxI7+7/0LqD6BBA74CfgIOSQUo7brmKKeph8lSEMm2sGgSAvK"
29
30
  description: >-
30
31
  The Subresource Integrity (SRI) CSS checksum (`sha384-...`) for the
31
- specific DataTables version used. This is essential for ensuring the integrity
32
- of the loaded CSS resource.
32
+ specific DataTables version used. Must be updated when `version`
33
+ changes.
33
34
  script_integrity:
34
35
  type: string
36
+ format: sri-hash
35
37
  default: "sha384-pszF7QvU8ChuuhQBJGIvzVEcojfpYqQOVG2PaXES4M4Mcn+1CqfQ4r1b/mpdtn/6"
36
38
  description: >-
37
39
  The Subresource Integrity (SRI) JavaScript checksum (`sha384-...`)
38
- for the specific DataTables version used. This ensures the integrity of
39
- the loaded JavaScript file.
40
+ for the specific DataTables version used. Must be updated when
41
+ `version` changes.
40
42
  page_length:
41
- type: integer # SUGGESTION: Changed from string to integer for strict validation
43
+ type: integer
42
44
  default: 10
43
45
  description: >-
44
46
  The default number of entries (rows) to display per page initially.
45
47
  Users can dynamically change this value using the length menu control.
46
48
  length_menu:
47
- type: string # Kept as string to preserve comma-separated input ease
49
+ type: string # String, not an array, so a comma-separated list stays easy to type
48
50
  default: "10,25,50,75"
49
51
  description: >-
50
52
  A comma-separated list of numbers defining the options available
@@ -30,16 +30,24 @@ properties:
30
30
  description: The name of the CSS bundle file to include (e.g., `all` loads all styles).
31
31
  css_bundle_integrity:
32
32
  type: string
33
+ format: sri-hash
33
34
  default: "sha512-ApSLB1Pd3/bZN8fWB/RG9YhN/7bd9Hkf3AGaE2mPfebjrxagjuBtx2GcgdqIlJkUzwylBo61r9Xa9NmgBI0swA=="
34
- description: The Subresource Integrity (SRI) CSS checksum (`sha512-...`) for the specified bundle, ensuring the security and integrity of the stylesheet file.
35
+ description: >-
36
+ The Subresource Integrity (SRI) CSS checksum (`sha512-...`) for the
37
+ specified bundle. Must be updated when `version` or
38
+ `css_bundle_name` changes.
35
39
  js_bundle_name:
36
40
  type: string
37
41
  default: "all"
38
42
  description: The name of the JavaScript bundle file to include (e.g., `all` loads all JS functionality).
39
43
  js_bundle_integrity:
40
44
  type: string
45
+ format: sri-hash
41
46
  default: "sha512-BivWm1+PupfLofQ5Ei/fNEC6Oq6IZiGO9WUm2ibWHZ33cj/qTX4zsBW/0SN9Myo4HEmINmr0wjuQE8eDL3rmng=="
42
- description: The Subresource Integrity (SRI) JavaScript checksum (`sha512-...`) for the specified bundle, ensuring the security and integrity of the script file.
47
+ description: >-
48
+ The Subresource Integrity (SRI) JavaScript checksum (`sha512-...`)
49
+ for the specified bundle. Must be updated when `version` or
50
+ `js_bundle_name` changes.
43
51
  mode:
44
52
  type: string
45
53
  enum:
@@ -16,7 +16,7 @@ description: Community Enterprise Operating System
16
16
  # Project Actions
17
17
  # -------------------------------------------------------------------------------
18
18
  # Use short verbs to tell users what they can do inside the project (e.g., Know
19
- # more, Contribute, etc.). Project actions
19
+ # more, Contribute, etc.).
20
20
  actions:
21
21
  - name: Know more
22
22
  icon: fa-solid fa-arrow-right
@@ -0,0 +1,83 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Configuration Variables — Default Cell
4
+ Purpose: Renders one Default-column cell's contents. Included from both
5
+ configuration_variables.html.liquid (top-level table) and
6
+ configuration_variables-nested.html.liquid (recursive nested tables) so every
7
+ schema-driven Name/Type/Default/Description table presents a long default
8
+ value the same way, with one shared rule instead of two copies that could
9
+ drift apart.
10
+
11
+ Behavior:
12
+ - Liquid's `default` filter treats `false` as blank, so a plain
13
+ `include.default | default: "—"` would hide a real `false` value. This nil
14
+ check keeps `false` distinct from "no default set".
15
+ - An explicit `default: ""` (e.g. download_schema.yml's `iso`/`rpm`/`link`
16
+ URLs, whose description already says "Empty hides the ... button") is a
17
+ real, intentional default — not the same as "no default declared". Left to
18
+ fall through to `<code>{{ default_value }}</code>`, it renders as a visibly
19
+ empty inline code element: sighted users read it as a rendering glitch, and
20
+ a screen reader announces an empty `<code>` with no indication a value is
21
+ even there, which fails WCAG 1.3.1 (the "default is an empty string" fact
22
+ is conveyed by absence alone, not programmatically). It gets its own
23
+ `<code>""</code>` rendering plus a `.visually-hidden` "(empty string)" note,
24
+ so the cell reads as a value distinct from both `—` (nil) and a populated
25
+ default.
26
+ - Every real default value renders as `<code>`, the same as the Name and
27
+ Type columns — a config default is a literal value, not prose, so it's
28
+ shown raw (escaped, not markdownified) rather than interpreted as
29
+ Markdown. The nil placeholder `—` is left plain, since it isn't a value.
30
+ - A default value with a long unbroken run of characters (an SRI hash, a
31
+ CDN URL, ...) forces its column wide under normal table auto-layout, at
32
+ the Description column's expense, regardless of how many columns the
33
+ table has. Truncating it into a fixed-width single-line box instead would
34
+ need scrolling or selecting to read the rest, which runs against WCAG
35
+ 1.4.10 Reflow. Past `long_value_threshold` characters with no space to
36
+ wrap at, the *longest unbroken token* (not the value's total length —
37
+ see below) gets the extra `.long-value` class (breaks at any character
38
+ via `overflow-wrap: anywhere`, see _customization.scss): the full value
39
+ stays visible with no interaction required, and it takes only the width
40
+ it actually needs.
41
+ - Checked by longest unbroken token, not total length: a value can be long
42
+ overall but still wrap fine on its own spaces (a class list, a sentence);
43
+ what actually forces a column wide is one run with nowhere to break.
44
+ - Only `type: string` values are checked for length — a boolean or number
45
+ is never "long", and running `split`/`size` on a non-string isn't
46
+ reliable.
47
+
48
+ Required Inputs:
49
+ - default: The raw prop_details.default value (may be nil, false, a string, etc.)
50
+ - type: The property's schema `type`, e.g. "string", "boolean".
51
+ ================================================================================
52
+ {% endcomment %}
53
+
54
+ {% if include.default == nil %}
55
+ {% assign default_value = "—" %}
56
+ {% elsif include.default == "" %}
57
+ {% assign default_value = "" %}
58
+ {% assign is_empty_string = true %}
59
+ {% else %}
60
+ {% assign default_value = include.default %}
61
+ {% endif %}
62
+
63
+ {% assign long_value_threshold = 24 %}
64
+ {% assign max_token_length = 0 %}
65
+ {% if include.type == "string" and default_value != "—" %}
66
+ {% assign default_tokens = default_value | split: " " %}
67
+ {% for token in default_tokens %}
68
+ {% assign token_length = token | size %}
69
+ {% if token_length > max_token_length %}
70
+ {% assign max_token_length = token_length %}
71
+ {% endif %}
72
+ {% endfor %}
73
+ {% endif %}
74
+
75
+ {% if default_value == "—" %}
76
+ —
77
+ {% elsif is_empty_string %}
78
+ <code>""</code><span class="visually-hidden"> (empty string)</span>
79
+ {% elsif max_token_length > long_value_threshold %}
80
+ <code class="long-value">{{ default_value | escape }}</code>
81
+ {% else %}
82
+ <code>{{ default_value | escape }}</code>
83
+ {% endif %}
@@ -17,8 +17,6 @@ others. Requires two distinct loops for valid HTML structure.
17
17
 
18
18
  {% if current_properties %}
19
19
 
20
- {% assign current_property_count = current_properties | size %}
21
-
22
20
  {% assign table_classes = "table dataTable" %}
23
21
  {% assign table_id = parent_name | slugify | append: '-nested-' | append: current_level %}
24
22
 
@@ -42,39 +40,14 @@ others. Requires two distinct loops for valid HTML structure.
42
40
  {% for property in current_properties -%}
43
41
  {% assign prop_key = property[0] %}
44
42
  {% assign prop_details = property[1] %}
45
- {% comment %}
46
- Liquid's `default` filter treats `false` as blank, so a plain
47
- `prop_details.default | default: "—"` would hide a real `false`
48
- value. This nil check keeps `false` distinct from no default set.
49
- {% endcomment %}
50
- {% if prop_details.default == nil %}
51
- {% assign default_value = "—" %}
52
- {% else %}
53
- {% assign default_value = prop_details.default %}
54
- {% endif %}
55
43
 
56
44
  <tr>
57
45
  <td><code>{{ prop_key }}</code></td>
58
46
  {% if columns %}
59
47
  {% for col in columns %}<td>{{ prop_details[col.key] | strip_newlines | markdownify | default: "—" }}</td>{% endfor %}
60
48
  {% else %}
61
- <td>{{ prop_details.type | strip_newlines | markdownify | default: "—" }}</td>
62
- {% comment %}
63
- A long SRI hash as plain text stretches this column past the
64
- others. format: sri-hash renders it as a copyable value
65
- instead, the same pattern download_filevalue.html.liquid uses
66
- for checksums.
67
- {% endcomment %}
68
- {% if prop_details.format == "sri-hash" %}
69
- <td>
70
- <div class="input-group input-group-sm">
71
- <input type="text" class="form-control font-monospace" readonly value="{{ default_value | escape }}" aria-label="Value for {{ prop_key }}">
72
- <button type="button" class="input-group-text copy-btn focus-ring" data-copy-value="{{ default_value | escape }}" data-bs-toggle="tooltip" data-bs-title="Copy value" aria-label="Copy value for {{ prop_key }}"><span class="fa-regular fa-copy"></span></button>
73
- </div>
74
- </td>
75
- {% else %}
76
- <td>{{ default_value | strip_newlines | markdownify | default: "—" }}</td>
77
- {% endif %}
49
+ <td>{% if prop_details.type %}<code>{{ prop_details.type }}</code>{% else %}—{% endif %}</td>
50
+ <td>{% include base/configuration_variables-default-cell.html.liquid default=prop_details.default type=prop_details.type %}</td>
78
51
  <td>{{ prop_details.description | strip_newlines | markdownify | default: "—" }}</td>
79
52
  {% endif %}
80
53
  </tr>
@@ -98,7 +71,6 @@ others. Requires two distinct loops for valid HTML structure.
98
71
  {% endif %}
99
72
 
100
73
  {% if nested_properties %}
101
- {% comment %} Found deeper nesting: Call the next level {% endcomment %}
102
74
  {% assign next_parent_name = include.parent_name | append: "." | append: prop_key %}
103
75
  {% assign next_level_val = current_level | plus: 1 %}
104
76
 
@@ -17,15 +17,10 @@ of separate, nested DataTables for complex properties.
17
17
 
18
18
  {% if property_schema.properties %}
19
19
 
20
- {% comment %} 1. Calculate the property count for the top table using | size. {% endcomment %}
21
- {% assign property_count = property_schema.properties | size %}
22
-
23
- {% comment %} 2. Determine the CSS classes for the top-level table. {% endcomment %}
24
20
  {% assign table_classes = "table dataTable" %}
25
21
 
26
22
  <p>The <code>{{ page.component.name }}</code> {{ page.component.type }} understands the following configuration variables:</p>
27
23
 
28
- {% comment %} 3. Render the top-level table completely {% endcomment %}
29
24
  <table class="{{ table_classes }}">
30
25
  <thead>
31
26
  <tr>
@@ -48,8 +43,8 @@ of separate, nested DataTables for complex properties.
48
43
  {% if columns %}
49
44
  {% for col in columns %}<td>{{ prop_details[col.key] | strip_newlines | markdownify | default: "—" }}</td>{% endfor %}
50
45
  {% else %}
51
- <td>{{ prop_details.type | strip_newlines | markdownify | default: "—" }}</td>
52
- <td>{{ prop_details.default | strip_newlines | markdownify | default: "—" }}</td>
46
+ <td>{% if prop_details.type %}<code>{{ prop_details.type }}</code>{% else %}—{% endif %}</td>
47
+ <td>{% include base/configuration_variables-default-cell.html.liquid default=prop_details.default type=prop_details.type %}</td>
53
48
  <td>{{ prop_details.description | strip_newlines | markdownify | default: "—" }}</td>
54
49
  {% endif %}
55
50
  </tr>
@@ -57,7 +52,7 @@ of separate, nested DataTables for complex properties.
57
52
  </tbody>
58
53
  </table>
59
54
 
60
- {% comment %} 4. Initiate recursive nested table generation (separate loop) {% endcomment %}
55
+ {% comment %} Separate loop, run only after </table> closes above: recurses into any property that nests its own properties. {% endcomment %}
61
56
  {% for property in property_schema.properties -%}
62
57
  {% assign prop_key = property[0] %}
63
58
  {% assign prop_details = property[1] %}
@@ -65,12 +60,10 @@ of separate, nested DataTables for complex properties.
65
60
  {% assign nested_properties = nil %}
66
61
  {% assign type_desc = "" %}
67
62
 
68
- {% comment %} Check for nested structures in the top-level properties {% endcomment %}
69
63
  {% if prop_details.type == "object" and prop_details.properties %}
70
64
  {% assign nested_properties = prop_details.properties %}
71
65
  {% assign type_desc = "dictionary (map)" %}
72
66
  {% elsif prop_details.type == "array" and prop_details.items.properties %}
73
- {% comment %} Handle array of objects {% endcomment %}
74
67
  {% assign nested_properties = prop_details.items.properties %}
75
68
  {% assign type_desc = "list of dictionaries" %}
76
69
  {% endif %}
@@ -78,7 +71,6 @@ of separate, nested DataTables for complex properties.
78
71
  {% if nested_properties %}
79
72
  {% assign initial_level = 1 %}
80
73
 
81
- {% comment %} Call the recursive include for the first level of nested properties. {% endcomment %}
82
74
  {% include base/configuration_variables-nested.html.liquid
83
75
  properties=nested_properties
84
76
  parent_name=prop_key
@@ -12,7 +12,10 @@ Design Logic:
12
12
  - Google Fonts: Montserrat (5 weights) and Source Code Pro (2 weights) via async stylesheet
13
13
  - Breakingnews scroll offset: dynamic CSS calculation
14
14
  - Conditional includes: OGP, Highlight.js, DataTables, FontAwesome (SVG+JS), Event Calendar
15
- - CSS prioritization: custom stylesheet last for override
15
+ - CSS load order: theme stylesheet loads first, then per-component vendor
16
+ CSS (FontAwesome, DataTables, Event Calendar). Components whose vendor CSS
17
+ needs correcting win with higher-specificity selectors in their own SCSS
18
+ partial instead of load order — see _datatable.scss and _calendar.scss.
16
19
  - Script loading: Bootstrap base first (defer), then optional extensions, then UI behaviors
17
20
  - Bootstrap and FontAwesome preloaded (high-priority fetch); CDN origins preconnected + dns-prefetched per active component
18
21
 
@@ -343,6 +343,19 @@ main {
343
343
  background-color: transparent;
344
344
  border-radius: 0;
345
345
  }
346
+
347
+ // A configuration default's long unbroken token (an SRI hash, a CDN
348
+ // URL, ...) has no natural break point, so it needs an explicit
349
+ // permission to wrap — otherwise it either overflows or forces its
350
+ // column wide (configuration_variables-default-cell.html.liquid, used
351
+ // by both configuration_variables.html.liquid and its nested
352
+ // counterpart). `anywhere` (not `break-word`) also lets it contribute
353
+ // a single-character min-content width, so table auto layout gives the
354
+ // column only the space it actually needs, regardless of how many
355
+ // columns the table has.
356
+ .long-value {
357
+ overflow-wrap: anywhere;
358
+ }
346
359
  }
347
360
  }
348
361
 
@@ -26,14 +26,17 @@ $theme-colors: map-merge($theme-colors, $centos-base-colors);
26
26
  // Light shades: use standard tint-color (adds white, works well)
27
27
  $shade-color: tint-color($color, percentage(math.div(500 - $shade, 500)));
28
28
  } @else if $shade > 500 {
29
- // Special case: Green 700 needs 30% black mix (not 20%) for AA compliance.
30
- // This ensures WHITE text contrast meets 4.5:1 threshold.
29
+ // Special case: green-700 skips the saturated-shade formula below and
30
+ // mixes 30% black directly, to keep its contrast against this theme's
31
+ // body text at a safe margin above WCAG AA — see src/YAML/color.yml's
32
+ // generated centos-green-700 entry for the current contrast ratio.
31
33
  @if $name == "centos-green" and $shade == 700 {
32
34
  $shade-color: shade-color($color, 30%);
33
35
  } @else {
34
- // NEW: Use saturation-normalized shade for all other dark shades
35
- // This function increases saturation multiplier for grades 800-950
36
- // Result: vivid dark colors that feel on-brand
36
+ // Saturation-normalized shade for every other dark grade (800-950):
37
+ // increases the saturation multiplier so these stay vivid and
38
+ // on-brand instead of fading gray, the way Bootstrap's own
39
+ // shade-color() would.
37
40
  $shade-color: saturated-shade($color, $shade);
38
41
  }
39
42
  } @else {
@@ -158,7 +158,8 @@ $code-color: #673259;
158
158
  // These control the default background and text colors for the entire page.
159
159
  $body-bg: $white;
160
160
  $body-color: #1c0d19; // purple-tinted near-black; matches the text_color_hex value
161
- // used across most centos-purple shades in _data/base/color.yml
161
+ // paired with the light centos-purple shades (50-400) in
162
+ // src/YAML/color.yml
162
163
 
163
164
  // Bootstrap's color-contrast() function (used by .text-bg-* utilities like
164
165
  // .text-bg-light) picks between $color-contrast-dark/-light to pair with a
@@ -39,7 +39,19 @@ document.addEventListener('DOMContentLoaded', () => {
39
39
  wrapper.appendChild(tableEl)
40
40
  }
41
41
 
42
+ // DataTables' autoWidth measures every cell in a detached, unconstrained
43
+ // clone before the table is laid out, so a `.long-value` cell's
44
+ // `overflow-wrap: anywhere` (_customization.scss) never gets a chance
45
+ // to wrap during that measurement — DataTables sees the value's full
46
+ // one-line length and gives its column that much width, starving every
47
+ // other column. Detected by content, not column position or count, so
48
+ // it holds regardless of which column the value ends up in or how many
49
+ // columns the table has. Skipping autoWidth here lets the browser's own
50
+ // table layout size columns instead, which does respect the wrap.
51
+ const hasWrappingLongValue = tableEl.querySelector('.long-value') !== null
52
+
42
53
  new DataTable(tableEl, {
54
+ autoWidth: !hasWrappingLongValue,
43
55
  paging: enabledCondition,
44
56
  info: enabledCondition,
45
57
  searching: enabledCondition,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-centos
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.52.0.beta.103
4
+ version: 2.52.0.beta.104
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alain Reguera Delgado
@@ -341,6 +341,7 @@ files:
341
341
  - _includes/base/calendar.html.liquid
342
342
  - _includes/base/card.html.liquid
343
343
  - _includes/base/color-table.html.liquid
344
+ - _includes/base/configuration_variables-default-cell.html.liquid
344
345
  - _includes/base/configuration_variables-nested.html.liquid
345
346
  - _includes/base/configuration_variables.html.liquid
346
347
  - _includes/base/content.html.liquid