jekyll-theme-centos 2.52.0.beta.85 → 2.52.0.beta.86

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: 6b26c32164c0114ea621d445ceb40c7a569158712db0206f96f07c4aefc038d3
4
- data.tar.gz: ab2ee634b6635b3f9c0e0ff52087b9256ec4727526b602c75781d213814b0e6e
3
+ metadata.gz: 3943a6b85706eb275f04a4388be077c827e49d040c9ec4ffa249549997ac1323
4
+ data.tar.gz: a8e33703d73166f851e02353b57d8509b3bd02cdd0671164d9c447943c8d6541
5
5
  SHA512:
6
- metadata.gz: d36db093009d770ce36ab9490e8901f36e079d60294b60f922cd8d6ebdbebe49143f72706268b0ba948ad282ebc192be7b7c356a4b14a5ca63a5238a964cca20
7
- data.tar.gz: 5d29d270aed80d3f1da128db0e1db86b23798f7b70b0a5495133bf16fd103d72b558cc4533f51675752d6a9e2e8cef3e284bb3c61adf635676d5a23e01d9be76
6
+ metadata.gz: 485202a17eaeb368b58e834f3412b85d45322aeb6220b1e0f0e230002c9db2befa9f9640bf200ae5de9c86c067d5158214559400437fad2bed5e1d57ef27a64c
7
+ data.tar.gz: 02e87bb36e5e23d99993d6294cdfe3981fd7e50c24b9da876b9b11390bfc86d7f01908999aa2c1837c94e624f04bbba9dd05fe452c69c00d2402365070350c3a
@@ -1,5 +1,5 @@
1
1
  <table class="table dataTable">
2
- <thead class="table-light">
2
+ <thead>
3
3
  <tr>
4
4
  <th>{{ include.name_label | default: "Color" }}</th>
5
5
  <th class="text-nowrap">Hex</th>
@@ -28,7 +28,7 @@ others. Requires two distinct loops for valid HTML structure.
28
28
  <p class="my-3">The <code>{{ parent_name }}</code> variable is a {{ type_desc }} with the following properties:</p>
29
29
 
30
30
  <table id="{{ table_id }}" class="{{ table_classes }}">
31
- <thead class="table-light">
31
+ <thead>
32
32
  <tr>
33
33
  <th scope="col">{{ col_name }}</th>
34
34
  {% if columns %}
@@ -27,7 +27,7 @@ of separate, nested DataTables for complex properties.
27
27
 
28
28
  {% comment %} 3. Render the top-level table completely {% endcomment %}
29
29
  <table class="{{ table_classes }}">
30
- <thead class="table-light">
30
+ <thead>
31
31
  <tr>
32
32
  <th scope="col">{{ col_name }}</th>
33
33
  {% if columns %}
@@ -129,7 +129,7 @@ Data Object Properties:
129
129
  {% capture table %}
130
130
  {% assign show_page_filename = include.show_page_filename | default: "false" %}
131
131
  <table class="table dataTable">
132
- <thead class="table-light">
132
+ <thead>
133
133
  <tr>
134
134
  <th>Name</th>
135
135
  <th>Description</th>
@@ -155,7 +155,7 @@ Data Object Properties:
155
155
 
156
156
  {% capture component_table %}
157
157
  <table class="table dataTable">
158
- <thead class="table-light">
158
+ <thead>
159
159
  <tr>
160
160
  <th>Name</th>
161
161
  <th>Status</th>
@@ -1,49 +1,31 @@
1
1
  // ================================================================================
2
2
  // Event Calendar (@event-calendar/build) theming
3
3
  // ================================================================================
4
- // Purpose: Map the CentOS color palette onto the Event Calendar library's own
5
- // CSS custom properties (--ec-*), instead of hand-rolling calendar styles.
4
+ // Purpose: map the CentOS color palette onto the library's own CSS custom
5
+ // properties (--ec-*) instead of hand-rolling calendar styles.
6
6
  //
7
- // Selector specificity note: the library ships its own `.ec { --ec-*: ...; }`
8
- // block (see https://github.com/vkurko/calendar/blob/master/packages/core/src/styles/theme.css)
9
- // inside event-calendar.min.css, which this theme loads via the "CSS
10
- // dependencies" block in head.html.liquid AFTER this theme's own
11
- // stylesheet.min.css. A same-specificity `.ec { ... }` override placed here
12
- // would therefore lose the cascade to the library's own later-loaded rule.
13
- // Prefixing with `body` bumps our selector's specificity above the
14
- // library's plain `.ec` rule so our values win regardless of load order
15
- // (the same technique this file's DataTables corrections use in
16
- // _customization.scss, e.g. `.content .dt-container`).
7
+ // `body` prefix: event-calendar.min.css loads after this theme's own
8
+ // stylesheet (see head.html.liquid) and ships its own same-specificity
9
+ // `.ec { --ec-*: ...; }` block, so a plain `.ec { }` here would lose the
10
+ // cascade. `body .ec` bumps specificity above it.
17
11
  //
18
- // The dark-mode toggle classes (`.ec-dark`/`.ec-auto-dark`) are applied by
19
- // the page to whichever element wraps the calendar — commonly `<body>`
20
- // itself, per this library's own docs. A `body .ec-dark .ec` selector would
21
- // require `.ec-dark` on a *descendant* of body and never match when body
22
- // carries the class directly, so the dark blocks anchor to `html` instead
23
- // (always an ancestor of body, regardless of which element the toggle class
24
- // lands on) to stay correct in both cases.
12
+ // Dark mode keys off Bootstrap's `[data-bs-theme="dark"]`, not the
13
+ // library's own `.ec-dark`/`.ec-auto-dark` classes, to match every other
14
+ // Bootstrap component. Two selector branches below because the attribute
15
+ // can sit on `<html>` itself or on some other ancestor (e.g. `<nav>`), and
16
+ // one selector can't match both.
25
17
  // ================================================================================
26
18
 
27
19
  body .ec {
28
- // The library defines --ec-bg-color but never applies it to .ec itself
29
- // (only to specific inner elements like popups), so the calendar's outer
30
- // container has no background of its own and shows whatever it's placed
31
- // on through — inconsistent depending on the page's own layout. Declared
32
- // once here (not repeated in the dark-mode blocks below): --ec-surface-bg-color
33
- // cascades normally, so this always reads whichever value currently wins
34
- // for this element, light or dark.
20
+ // --ec-bg-color is never applied to .ec itself, leaving the outer
21
+ // container transparent. --ec-surface-bg-color fills that gap (declared
22
+ // once here, cascades to the dark block below).
35
23
  //
36
- // Deliberately a separate variable from --ec-bg-color, not the same one:
37
- // the library also derives --ec-day-bg-color (grid cells), .ec-sidebar,
38
- // and .ec-col-head (weekday row) from --ec-bg-color. Every component's
39
- // "Live example" across this theme's docs sits inside a `.text-bg-light`
40
- // preview box (see e.g. components/calendar.md), painted with $light —
41
- // so the outer container/toolbar use $light too, to sit flush with that
42
- // surface. But feeding $light into --ec-bg-color directly also recolors
43
- // the day cells and weekday header to $light, flattening the grid against
44
- // its own container and losing the contrast that gives the calendar its
45
- // shape. --ec-bg-color stays $white so those inner surfaces keep
46
- // contrasting against the (now $light) outer one.
24
+ // Kept separate from --ec-bg-color: the library also derives
25
+ // --ec-day-bg-color, .ec-sidebar, and .ec-col-head from --ec-bg-color, so
26
+ // feeding it $light (to match the doc preview boxes) would flatten the
27
+ // day grid to the same color and lose contrast. --ec-bg-color stays
28
+ // $white.
47
29
  background-color: var(--ec-surface-bg-color);
48
30
  --ec-surface-bg-color: #{$light};
49
31
 
@@ -53,10 +35,16 @@ body .ec {
53
35
 
54
36
  --ec-button-bg-color: #{$white};
55
37
  --ec-button-border-color: #{$border-color};
56
- --ec-button-text-color: #{$body-color};
57
- --ec-button-active-bg-color: #{map-get($theme-colors, 'centos-purple-100')};
38
+ --ec-button-text-color: var(--bs-link-color);
39
+ --ec-button-active-bg-color: #{$primary};
58
40
  --ec-button-active-border-color: #{$primary};
59
- --ec-button-active-text-color: #{$primary};
41
+ --ec-button-active-text-color: #{$white};
42
+
43
+ // --bs-pagination-hover-* only exists inside `.pagination`, so use the
44
+ // root-scoped tokens instead — also keeps this in sync with
45
+ // [data-bs-theme] without a separate dark-mode copy.
46
+ --ec-button-hover-bg-color: var(--bs-tertiary-bg);
47
+ --ec-button-hover-text-color: var(--bs-link-hover-color);
60
48
 
61
49
  --ec-today-bg-color: #{map-get($theme-colors, 'centos-orange-50')};
62
50
  --ec-highlight-color: #{map-get($theme-colors, 'centos-purple-50')};
@@ -68,82 +56,55 @@ body .ec {
68
56
  --ec-now-indicator-color: #{$danger};
69
57
  --ec-popup-bg-color: #{$white};
70
58
 
71
- // The library renders event titles as <h4 class="ec-event-title"> but only
72
- // resets its font-size in list view (`.ec-list .ec-event-title`) in every
73
- // other view it falls through to this theme's Bootstrap h4 size. Match it
74
- // to the calendar's own body text size (the same size the day-of-week
75
- // header row uses) instead of an oversized heading.
59
+ // The library only resets .ec-event-title's font-size in list view;
60
+ // elsewhere it falls through to this theme's Bootstrap h4 size. Matched
61
+ // to the calendar's own body text size instead.
76
62
  //
77
- // In month/all-day grid views the library also sets a `min-block-size:
78
- // 1.5em` on this same element for tap-target sizing. Since it's
79
- // `display: block`, that extra height just extends downward past the
80
- // (now correctly-sized, single-line) text instead of centering it,
81
- // leaving the name visibly top-biased in its pill. Making the title a
82
- // flex container of its own single line of text centers it within
83
- // whatever height the library gives it — a no-op in list/time-grid views,
84
- // which don't set that min-height in the first place.
63
+ // Grid/all-day views also set `min-block-size: 1.5em` here for tap
64
+ // targets; since the element is `display: block`, the shrunk text stays
65
+ // top-biased inside that height. Flex + centered alignment fixes that (a
66
+ // no-op where the min-height isn't set).
85
67
  .ec-event-title {
86
68
  font-size: #{$font-size-base};
87
69
  display: flex;
88
70
  align-items: center;
89
71
  }
90
72
 
91
- // List view's day-group heading (day name + date) is also an <h4>, hitting
92
- // the same Bootstrap h4 collision as .ec-event-title above. Match it to the
93
- // same body text size as the event name, kept bold (the library's own
94
- // default weight for this heading) so the two rows stay visually distinct.
95
- // (.ec-day-head doubles as the day-number cell in month view, so this
96
- // covers both.)
73
+ // Same h4 collision as .ec-event-title above; matched to body text size,
74
+ // kept bold so the two rows stay visually distinct. (.ec-day-head also
75
+ // doubles as the day-number cell in month view.)
97
76
  .ec-day-head {
98
77
  font-size: #{$font-size-base};
99
78
  font-weight: 700;
100
79
  }
101
80
 
102
- // Headings inside the calendar (.ec-title the "August 2026" navigation
103
- // title; .ec-col-head, the Sun/Mon/… weekday row; .ec-day-head, the
104
- // day-number/day-group heading above) all rely on inherited `color`, since
105
- // the library never sets one itself: its own h1-h6 rule is `color:
106
- // var(--bs-heading-color)`, and this theme leaves that Bootstrap variable
107
- // empty (`$headings-color: null`), so the value is invalid and falls back
108
- // to whatever color is inherited from the calendar's ancestors. That's
109
- // normally this theme's own body color, but it silently breaks wherever
110
- // the calendar is embedded inside anything that sets its own text color —
111
- // e.g. this component's own doc example, wrapped in Bootstrap's
112
- // `.text-bg-light` for a bordered preview box, which forces black. Set it
113
- // explicitly instead of depending on inheritance, so the calendar's
114
- // headings always match the page's own heading color regardless of what
115
- // wraps it.
81
+ // These are real headings, so they inherit this theme's
82
+ // `color: var(--bs-heading-color)` `inherit` ($headings-color is
83
+ // unset). Normally that's the body color, but breaks wherever the
84
+ // calendar sits inside something that forces its own text color (e.g.
85
+ // the doc example's `.text-bg-light` preview, which forces black). Set
86
+ // explicitly instead of relying on inheritance.
116
87
  .ec-title,
117
88
  .ec-col-head,
118
89
  .ec-day-head {
119
90
  color: var(--ec-text-color);
120
91
  }
121
92
 
122
- // List view's per-event color tag (a thin bar next to the event name) only
123
- // gets an inline background color when the event data itself sets one; our
124
- // example events don't, so give it the same event color used everywhere
125
- // else instead of leaving it transparent/invisible.
93
+ // Only gets a background when event data sets one inline; our example
94
+ // events don't, so default it to the event color instead of leaving it
95
+ // invisible.
126
96
  .ec-event-tag {
127
97
  background-color: var(--ec-event-bg-color);
128
98
  }
129
99
 
130
- // The toolbar (view title + nav/view-switcher buttons) sits inside
131
- // .ec-header, which the library makes `position: sticky` so it stays
132
- // pinned while the grid/list body scrolls underneath — but the library
133
- // never gives the toolbar its own background. Left unset it stays
134
- // transparent, so scrolled-under event content shows through it instead
135
- // of the toolbar blending into the calendar around it. Match it to the
136
- // same --ec-surface-bg-color used for .ec itself so it reads as one
137
- // surface (see the --ec-surface-bg-color vs. --ec-bg-color note above).
100
+ // .ec-header is `position: sticky`, but the library only backgrounds its
101
+ // own .ec-sidebar cell inside it — the toolbar cell stays transparent, so
102
+ // scrolled-under content shows through. .ec-toolbar gets the same
103
+ // --ec-surface-bg-color as .ec to close that gap.
138
104
  //
139
- // The library also spaces the toolbar from the grid/list body below with
140
- // `margin-block-end: 1em`, not padding. A margin sits outside the
141
- // toolbar's own border box, so that gap isn't painted by the
142
- // background-color above — it shows whatever is behind the (transparent)
143
- // .ec-header instead, leaving a visible seam of mismatched color between
144
- // the toolbar and the calendar body. Zero out the margin and swap in the
145
- // same amount of padding so the toolbar's own background extends through
146
- // that space instead of leaving a gap for it to show through.
105
+ // The library also spaces the toolbar from the body with
106
+ // `margin-block-end: 1em` (not padding), so that gap isn't painted by the
107
+ // background above. Zeroed out and replaced with equal padding instead.
147
108
  .ec-toolbar {
148
109
  background-color: var(--ec-surface-bg-color);
149
110
  margin-block-end: 0;
@@ -151,9 +112,57 @@ body .ec {
151
112
  }
152
113
  }
153
114
 
154
- // Manual dark toggle (an ancestor typically <body> itself — carries the
155
- // .ec-dark class).
156
- html .ec-dark .ec {
115
+ // The library's hover rule shares --ec-button-active-* with .ec-active, so
116
+ // hover and the persisted selection would look identical; `:not(.ec-active)`
117
+ // leaves the active button's fill alone on hover.
118
+ body .ec .ec-button:not(:disabled):hover:not(.ec-active) {
119
+ background-color: var(--ec-button-hover-bg-color);
120
+ border-color: var(--ec-button-border-color);
121
+ color: var(--ec-button-hover-text-color);
122
+ // Avoids tying with .ec-active's z-index:1 at the grouped buttons' 1px
123
+ // overlap seam, which made hover/active flicker near that pixel.
124
+ z-index: 0;
125
+ }
126
+
127
+ // Event Calendar draws its prev/next glyph as a pure-CSS border trick (no
128
+ // icon-injection API exists). Swapped for real FontAwesome chevrons to
129
+ // match datatable's pagination icons (datatable.js). `rotate: none` cancels
130
+ // the library's LTR/RTL mirroring transform, sized for the old glyph; our
131
+ // `body .ec` prefix out-specifies its `[dir=rtl]` variant too. Coupled to
132
+ // FontAwesome's default "css" mode and "Font Awesome 7 Free" family
133
+ // (with_fontawesome_data.version default 7.0.1) — revisit if either changes.
134
+ //
135
+ // .ec-icon also needs resizing: the library sizes it at a fixed 1em for the
136
+ // old 0.5em glyph. `1.25em` matches FontAwesome's default icon width;
137
+ // `line-height: 1` mirrors FontAwesome's own rule instead of the button's 1.5.
138
+ body .ec .ec-icon.ec-prev,
139
+ body .ec .ec-icon.ec-next {
140
+ inline-size: 1.25em;
141
+ text-align: center;
142
+ line-height: 1;
143
+ }
144
+
145
+ body .ec .ec-icon.ec-prev::after,
146
+ body .ec .ec-icon.ec-next::after {
147
+ content: "\f053"; // fa-chevron-left
148
+ font-family: "Font Awesome 7 Free";
149
+ font-weight: 900;
150
+ font-style: normal; // matches FontAwesome's own .fas rule; guards against inherited italics
151
+ border: none;
152
+ rotate: none;
153
+ inset-inline-start: 0;
154
+ block-size: auto;
155
+ inline-size: auto;
156
+ }
157
+
158
+ body .ec .ec-icon.ec-next::after {
159
+ content: "\f054"; // fa-chevron-right
160
+ }
161
+
162
+ // [data-bs-theme="dark"] may sit on <html> itself or on some other ancestor
163
+ // — two branches to match both (see header comment).
164
+ html[data-bs-theme="dark"] .ec,
165
+ html [data-bs-theme="dark"] .ec {
157
166
  --ec-surface-bg-color: #{$dark};
158
167
  --ec-bg-color: #{$dark};
159
168
  --ec-text-color: #{$light};
@@ -161,10 +170,9 @@ html .ec-dark .ec {
161
170
 
162
171
  --ec-button-bg-color: #{$dark};
163
172
  --ec-button-border-color: #{map-get($theme-colors, 'centos-purple-800')};
164
- --ec-button-text-color: #{$light};
165
- --ec-button-active-bg-color: #{map-get($theme-colors, 'centos-purple-700')};
166
- --ec-button-active-border-color: #{map-get($theme-colors, 'centos-purple-400')};
167
- --ec-button-active-text-color: #{$light};
173
+ --ec-button-active-bg-color: #{$primary};
174
+ --ec-button-active-border-color: #{$primary};
175
+ --ec-button-active-text-color: #{$white};
168
176
 
169
177
  --ec-today-bg-color: #{map-get($theme-colors, 'centos-orange-900')};
170
178
  --ec-highlight-color: #{map-get($theme-colors, 'centos-purple-900')};
@@ -175,30 +183,3 @@ html .ec-dark .ec {
175
183
 
176
184
  --ec-popup-bg-color: #{$dark};
177
185
  }
178
-
179
- // Automatic dark mode (an ancestor carries the .ec-auto-dark class and the
180
- // OS/browser prefers a dark color scheme) — same values as the manual toggle.
181
- @media (prefers-color-scheme: dark) {
182
- html .ec-auto-dark .ec {
183
- --ec-surface-bg-color: #{$dark};
184
- --ec-bg-color: #{$dark};
185
- --ec-text-color: #{$light};
186
- --ec-border-color: #{map-get($theme-colors, 'centos-purple-800')};
187
-
188
- --ec-button-bg-color: #{$dark};
189
- --ec-button-border-color: #{map-get($theme-colors, 'centos-purple-800')};
190
- --ec-button-text-color: #{$light};
191
- --ec-button-active-bg-color: #{map-get($theme-colors, 'centos-purple-700')};
192
- --ec-button-active-border-color: #{map-get($theme-colors, 'centos-purple-400')};
193
- --ec-button-active-text-color: #{$light};
194
-
195
- --ec-today-bg-color: #{map-get($theme-colors, 'centos-orange-900')};
196
- --ec-highlight-color: #{map-get($theme-colors, 'centos-purple-900')};
197
-
198
- --ec-event-bg-color: #{map-get($theme-colors, 'centos-purple-400')};
199
- --ec-event-text-color: #{$dark};
200
- --ec-bg-event-color: #{map-get($theme-colors, 'centos-purple-800')};
201
-
202
- --ec-popup-bg-color: #{$dark};
203
- }
204
- }
@@ -1,22 +1,24 @@
1
- // This file is for custom CSS rules and utility classes that override standard
2
- // Bootstrap structure. It should be the last file in your import sequence.
1
+ // Custom CSS rules and utility classes that override standard Bootstrap
2
+ // structure. Imported after `base/bootstrap` (so these win the cascade) and
3
+ // before third-party component overrides like base/calendar (so those win
4
+ // over these in turn).
3
5
  // Here, you define and generate custom utility classes using the variables and
4
6
  // maps that were set up previously.
5
7
 
6
8
  // ================================================================================
7
- // CSS Custom Properties (for dynamic inline styles)
9
+ // CSS Custom Properties (currently unused)
8
10
  // ================================================================================
9
- // These variables are used in head.html.liquid for dynamic CSS generation.
10
- // Defined here for centralized configuration and availability to inline styles.
11
+ // Not read anywhere head.html.liquid computes its own scroll-offset values
12
+ // inline from Liquid data instead, and the copy-button icon size below is
13
+ // hardcoded rather than referencing --highlight-icon-width/height. Kept as a
14
+ // record of the values those should stay in sync with.
11
15
  :root {
12
16
  // Breaking News Component
13
- // Measurements used for calculating scroll-margin-top in head.html.liquid
14
17
  --breakingnews-alert-height: 31px;
15
18
  --navbar-height: 42px;
16
19
  --heading-margin-top: 48px;
17
20
 
18
21
  // Highlight.js Icon Sizing
19
- // Used for copy button icon dimensions
20
22
  --highlight-icon-width: 24px;
21
23
  --highlight-icon-height: 24px;
22
24
  }
@@ -142,7 +144,8 @@ body {
142
144
  // Excluded from CSS icon styling via .announcement class.
143
145
  // Alerts: Use CSS-based SVG icons ($centos-alert-icons map) for markdown-based
144
146
  // alerts within .content, with type-specific icons per color.
145
- // Only applied to .alert:not(.announcement) to avoid styling announcements.
147
+ // Only applied to .alert:not(.announcement):not(.breakingnews), to
148
+ // avoid styling announcements and breaking news.
146
149
 
147
150
  $centos-alert-icons: (
148
151
  "primary": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' viewBox='0 0 42.333 42.333'><g transform='rotate(45 -180.13 -610.203) scale(1.0529)'><circle cx='388.123' cy='-290.716' r='20.103' style='fill:rgba(#{to-rgb(shade-color(map-get($theme-colors, 'primary'), 60%))},1);stroke:none;stroke-width:1.32292;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke;stop-color:#{to-rgb(shade-color(map-get($theme-colors, 'primary'), 60%))}'/><path d='M377.366-301.473v6.301l-4.456 4.456 4.456 4.456v6.302h6.302l4.456 4.456 4.456-4.456h6.301v-6.302l4.456-4.456-4.456-4.456v-6.301h-6.301l-4.456-4.456-4.456 4.456zm2.271 4.183 1.913-1.912 3.227 3.227v1.913h-1.912zm-2.163 5.222h4.565l1.352 1.352-1.352 1.353h-4.564zm9.297-9.297h2.705v4.564l-1.352 1.353-1.353-1.353zm.091 7.607 1.261 1.282 1.26-1.283-.015 1.798 1.798-.016-1.282 1.26 1.283 1.261-1.798-.015.016 1.798-1.26-1.282-1.261 1.283.015-1.799-1.798.016 1.282-1.26-1.283-1.26 1.799.015zm-7.225 9.617 3.228-3.228h1.912v1.913l-3.227 3.227zm11.833-11.834 3.228-3.227 1.913 1.912-3.228 3.228h-1.912zm-4.698 11.345 1.352-1.352 1.352 1.352v4.564h-2.704zm6.085-6.085 1.352-1.353h4.564v2.705h-4.564zm-1.387 3.346h1.913l3.228 3.228-1.913 1.912-3.228-3.227z' style='fill:%23fff;fill-opacity:1;stroke-width:9.12808;stroke-linecap:round;paint-order:fill markers stroke;stop-color:%23000'/></g></svg>"),
@@ -192,13 +195,11 @@ $centos-alert-icons: (
192
195
 
193
196
  main {
194
197
  // --------------------------------------------------------------------------------
195
- // Navbar and linked headings' correction.
196
- //
197
- // By default, when you access page headings from the page table of content
198
- // (toc) links, the heading is hidden behind the navbar. This workaround
199
- // fixes the linked headings visibility issue in the page.
200
- // Also applies the same correction to accordion buttons for consistent behavior.
198
+ // Linked headings' bottom clearance.
201
199
  // --------------------------------------------------------------------------------
200
+ // Navbar-independent baseline spacing for anchor-linked headings/figures.
201
+ // The fixed-navbar top clearance for these same selectors lives in the
202
+ // `.has-navbar main` block near the end of this file.
202
203
  .content > h1,
203
204
  .content > h2,
204
205
  .content > h3,
@@ -289,25 +290,14 @@ main {
289
290
  color: var(--bs-primary);
290
291
  }
291
292
 
292
- // Accordion containers' correction.
293
- //
294
- // When accessing accordion containers via internal anchor links, they wouldn't be
295
- // hidden behind the navbar. This correction ensures accordion containers remain
296
- // visible when linked to, and works in conjunction with the dynamic calculation
297
- // in head.html.liquid when breaking news is present.
298
- //
299
- // Note: Applied to .accordion container (not items) to avoid disrupting accordion
300
- // item internal layout while still providing proper scroll margin and visual spacing.
293
+ // Accordion containers' bottom clearance — same as the headings/figure
294
+ // block above, applied to both `.accordion` and `.accordion-item` since an
295
+ // anchor can target either level.
301
296
  .content .accordion,
302
297
  .content .accordion-item {
303
298
  scroll-margin-bottom: 100px;
304
299
  }
305
300
 
306
- // --------------------------------------------------------------------------------
307
- // DataTable BS5 corrections
308
- // --------------------------------------------------------------------------------
309
- .content { .dt-container { margin-bottom: 1rem; } }
310
-
311
301
  // --------------------------------------------------------------------------------
312
302
  // Copy Value Component
313
303
  // --------------------------------------------------------------------------------
@@ -370,10 +360,7 @@ main {
370
360
  height: 1rem; /* Adjust icon size as needed */
371
361
  }
372
362
  code {
373
- border-left: 5px;
374
- border-top: 1px;
375
- border-right: 1px;
376
- border-bottom: 1px;
363
+ border: 1px;
377
364
  border-color: var(--bs-light-border-subtle);
378
365
  border-style: solid;
379
366
  }
@@ -0,0 +1,125 @@
1
+ // ================================================================================
2
+ // DataTables (datatables.net) BS5 theming corrections
3
+ // ================================================================================
4
+ // Purpose: fix up the parts of DataTables' Bootstrap 5 styling integration
5
+ // that don't compose cleanly with this theme's own Bootstrap variables and
6
+ // tokens.
7
+ // ================================================================================
8
+
9
+ main {
10
+ // --------------------------------------------------------------------------------
11
+ // DataTable BS5 corrections
12
+ // --------------------------------------------------------------------------------
13
+ .content { .dt-container { margin-bottom: 0.5rem; } }
14
+
15
+ // Bootstrap paints table cells from `--bs-table-bg`, not `background-color`,
16
+ // so override that variable instead of adding a class. Scoped to `thead`
17
+ // only, without requiring `.table-light`: kramdown's `{:.table .dataTable}`
18
+ // IAL can't add a class to the generated `<thead>`, so a `.table-light`
19
+ // requirement would silently skip every Markdown-authored table.
20
+ .content {
21
+ table.dataTable thead {
22
+ --bs-table-bg: var(--bs-centos-purple-100);
23
+ }
24
+ }
25
+
26
+ // DataTables' bundled CSS never reads `--bs-table-striped-bg`; it paints
27
+ // striped rows with a hardcoded black box-shadow (`--dt-row-stripe`) that
28
+ // paints over any background-color, so neither the Bootstrap variable nor
29
+ // a class has any effect. Overridden directly with `--bs-light` — the same
30
+ // token driving the DataTables wrapper's `.bg-light` (datatable.js), so
31
+ // stripe and container share one semantic color.
32
+ // `:not(:hover)` defers to the hover rule below; `:not([class])` defers to
33
+ // contextual row classes like `.table-warning`.
34
+ .content {
35
+ table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1):not(:hover):not([class]) > * {
36
+ box-shadow: inset 0 0 0 9999px var(--bs-light);
37
+ }
38
+ }
39
+
40
+ // DataTables' own hover rule has the same box-shadow-over-background issue
41
+ // (`--dt-row-hover`, flat 7.5%-opacity black). Translucent purple composites
42
+ // over whatever's already on the row — plain, striped, or `.table-warning`
43
+ // — instead of needing to exclude any of them; alpha kept low (0.05) so it
44
+ // doesn't collide with the stripe color (`--bs-light`).
45
+ .content {
46
+ table.table.dataTable.table-hover > tbody > tr:hover > * {
47
+ box-shadow: inset 0 0 0 9999px rgba(var(--bs-primary-rgb), 0.05);
48
+ }
49
+ }
50
+
51
+ // DataTables marks sort state by opacity alone (idle/active), no hue and
52
+ // no icon-injection API — replaced with real FontAwesome glyphs so each
53
+ // header shows one icon matching its actual state. Coupled to
54
+ // with_fontawesome_data.version's default "Font Awesome 7 Free" family —
55
+ // revisit if that changes.
56
+ //
57
+ // Our selectors out-specify DataTables' own, but specificity wins per
58
+ // property, not per rule — every ::before/::after property that would
59
+ // conflict with a single centered glyph is redeclared below.
60
+ .content {
61
+ table.dataTable thead tr th .dt-column-order,
62
+ table.dataTable thead tr td .dt-column-order {
63
+ text-align: center;
64
+ line-height: 20px;
65
+ }
66
+
67
+ // Idle: orderable but not the active sort column/direction — single
68
+ // fa-sort (⇅) on ::before; ::after suppressed so only one glyph shows.
69
+ table.dataTable thead tr th.dt-orderable-asc:not(.dt-ordering-asc):not(.dt-ordering-desc) .dt-column-order::before,
70
+ table.dataTable thead tr td.dt-orderable-asc:not(.dt-ordering-asc):not(.dt-ordering-desc) .dt-column-order::before {
71
+ content: "\f0dc"; // fa-sort
72
+ font-family: "Font Awesome 7 Free";
73
+ font-weight: 900;
74
+ font-style: normal;
75
+ position: static;
76
+ line-height: inherit;
77
+ font-size: 0.8em;
78
+ opacity: 1;
79
+ color: var(--bs-centos-purple-300);
80
+ }
81
+
82
+ table.dataTable thead tr th.dt-orderable-asc:not(.dt-ordering-asc):not(.dt-ordering-desc) .dt-column-order::after,
83
+ table.dataTable thead tr td.dt-orderable-asc:not(.dt-ordering-asc):not(.dt-ordering-desc) .dt-column-order::after {
84
+ display: none;
85
+ }
86
+
87
+ // Ascending: ::before becomes fa-sort-up; ::after suppressed.
88
+ table.dataTable thead tr th.dt-ordering-asc .dt-column-order::before,
89
+ table.dataTable thead tr td.dt-ordering-asc .dt-column-order::before {
90
+ content: "\f0de"; // fa-sort-up
91
+ font-family: "Font Awesome 7 Free";
92
+ font-weight: 900;
93
+ font-style: normal;
94
+ position: static;
95
+ line-height: inherit;
96
+ font-size: 0.8em;
97
+ opacity: 1;
98
+ color: var(--bs-primary);
99
+ }
100
+
101
+ table.dataTable thead tr th.dt-ordering-asc .dt-column-order::after,
102
+ table.dataTable thead tr td.dt-ordering-asc .dt-column-order::after {
103
+ display: none;
104
+ }
105
+
106
+ // Descending: ::after becomes fa-sort-down; ::before suppressed.
107
+ table.dataTable thead tr th.dt-ordering-desc .dt-column-order::after,
108
+ table.dataTable thead tr td.dt-ordering-desc .dt-column-order::after {
109
+ content: "\f0dd"; // fa-sort-down
110
+ font-family: "Font Awesome 7 Free";
111
+ font-weight: 900;
112
+ font-style: normal;
113
+ position: static;
114
+ line-height: inherit;
115
+ font-size: 0.8em;
116
+ opacity: 1;
117
+ color: var(--bs-primary);
118
+ }
119
+
120
+ table.dataTable thead tr th.dt-ordering-desc .dt-column-order::before,
121
+ table.dataTable thead tr td.dt-ordering-desc .dt-column-order::before {
122
+ display: none;
123
+ }
124
+ }
125
+ }
@@ -37,3 +37,4 @@
37
37
  // 7. Third-party component theme overrides (must load after our own
38
38
  // customizations so component-specific corrections win the cascade).
39
39
  @import "base/calendar";
40
+ @import "base/datatable";