umberto 10.4.1 → 10.5.1

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.
package/CHANGELOG.md CHANGED
@@ -1,51 +1,41 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- ## [10.4.1](https://github.com/cksource/umberto/compare/v10.4.0...v10.4.1) (April 13, 2026)
4
+ ## [10.5.1](https://github.com/cksource/umberto/compare/v10.5.0...v10.5.1) (May 14, 2026)
5
5
 
6
6
  ### Bug fixes
7
7
 
8
- * Fixed URL in the dropdown for LTS item to have absolute URL to pass documentation validation.
8
+ * Changed the call for feedback title from `<h3>` to `<div>` to prevent it from appearing in the table of contents.
9
9
 
10
10
 
11
- ## [10.4.0](https://github.com/cksource/umberto/compare/v10.3.0...v10.4.0) (April 9, 2026)
11
+ ## [10.5.0](https://github.com/cksource/umberto/compare/v10.4.1...v10.5.0) (April 14, 2026)
12
12
 
13
13
  ### Features
14
14
 
15
- * Added the LTS edition to the docs product picker.
16
-
15
+ * Added the Call for feedback component for documentation pages.
17
16
 
18
- ## [10.3.0](https://github.com/cksource/umberto/compare/v10.2.0...v10.3.0) (April 3, 2026)
19
17
 
20
- ### Features
18
+ ## [10.4.1](https://github.com/cksource/umberto/compare/v10.4.0...v10.4.1) (April 13, 2026)
21
19
 
22
- * Added support for displaying and filtering experimental API items in TypeDoc-based API docs.
20
+ ### Bug fixes
23
21
 
24
- Experimental annotations now appear in page headers and member listings, and can be toggled with the API filters.
22
+ * Fixed URL in the dropdown for LTS item to have absolute URL to pass documentation validation.
25
23
 
26
24
 
27
- ## [10.2.0](https://github.com/cksource/umberto/compare/v10.1.4...v10.2.0) (April 2, 2026)
25
+ ## [10.4.0](https://github.com/cksource/umberto/compare/v10.3.0...v10.4.0) (April 9, 2026)
28
26
 
29
27
  ### Features
30
28
 
31
- * Added support for configuring Kapa AI source groups via the `sourceGroupIds` option. The option can be set globally in `kapa.default` or per project to filter the widget's knowledge base to specific source groups.
32
-
33
- ### Bug fixes
34
-
35
- * Fixed a console error thrown when hovering over a CKEditor bookmark element. The `links-prefetch` module now silently ignores anchor elements with no `href` instead of calling `new URL( '' )` and logging a spurious error.
36
-
37
- ### Other changes
29
+ * Added the LTS edition to the docs product picker.
38
30
 
39
- * Removed the legacy warning banner.
40
- * Added cyan LTS banner at the top of the page on LTS branch.
41
- * Updated the colour of nightly banner to yellow.
42
31
 
32
+ ## [10.3.0](https://github.com/cksource/umberto/compare/v10.2.0...v10.3.0) (April 3, 2026)
43
33
 
44
- ## [10.1.4](https://github.com/cksource/umberto/compare/v10.1.3...v10.1.4) (March 20, 2026)
34
+ ### Features
45
35
 
46
- ### Other changes
36
+ * Added support for displaying and filtering experimental API items in TypeDoc-based API docs.
47
37
 
48
- * Filter search results from Algolia to match the current docs version: `latest` or `lts-v47`. Filtering remains backward-compatible: hits without the docs version are still allowed.
38
+ Experimental annotations now appear in page headers and member listings, and can be toggled with the API filters.
49
39
 
50
40
  ---
51
41
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "umberto",
3
- "version": "10.4.1",
3
+ "version": "10.5.1",
4
4
  "description": "CKSource Documentation builder",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const countCallForFeedbackBlocks = require( '../../../utils/count-call-for-feedback-blocks.cjs' );
9
+
10
+ hexo.extend.filter.register( 'after_post_render', page => {
11
+ if ( page.projectTheme !== 'gloria' || typeof page.content !== 'string' ) {
12
+ return page;
13
+ }
14
+
15
+ const count = countCallForFeedbackBlocks( page.content );
16
+
17
+ if ( count > 1 ) {
18
+ throw new Error(
19
+ `Call for feedback: expected at most one <ck:call-for-feedback /> per page, found ${ count } in ${ page.source }.`
20
+ );
21
+ }
22
+
23
+ return page;
24
+ }, 47 );
@@ -144,6 +144,16 @@ const PATTERN_ELEMENTS = [
144
144
  ]
145
145
  },
146
146
 
147
+ // Call for feedback
148
+ {
149
+ pattern: /^(?:ck:)?call-for-feedback$/,
150
+ mixinName: 'call-for-feedback',
151
+ allowMarkdownContent: false,
152
+ requires: [
153
+ '_components/call-for-feedback/index'
154
+ ]
155
+ },
156
+
147
157
  // Labels
148
158
  {
149
159
  pattern: /(?:ck:)?snippet-footer$/,
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const { parseDocument } = require( 'htmlparser2' );
9
+ const { selectAll } = require( 'css-select' );
10
+
11
+ /**
12
+ * Counts rendered Call for feedback blocks (`aside.c-call-for-feedback`) in HTML.
13
+ *
14
+ * @param {string} html
15
+ * @returns {number}
16
+ */
17
+ function countCallForFeedbackBlocks( html ) {
18
+ if ( !html || typeof html !== 'string' ) {
19
+ return 0;
20
+ }
21
+
22
+ const doc = parseDocument( html );
23
+
24
+ return selectAll( 'aside.c-call-for-feedback', doc ).length;
25
+ }
26
+
27
+ module.exports = countCallForFeedbackBlocks;
@@ -0,0 +1,47 @@
1
+ .c-call-for-feedback {
2
+ box-sizing: border-box;
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: flex-start;
6
+ gap: var(--spacing-2);
7
+ margin: var(--spacing-7) 0 0;
8
+ padding: var(--spacing-4);
9
+ border: 1.5px solid var(--color-primary-300);
10
+ border-radius: var(--radius-1);
11
+ background: var(--color-common-white);
12
+
13
+ &__title {
14
+ margin: 0;
15
+ font-family: var(--font-family-heading);
16
+ font-size: var(--font-size-lg);
17
+ line-height: var(--line-height-sm);
18
+ font-weight: var(--font-weight-bold);
19
+ color: var(--color-primary-500);
20
+ }
21
+
22
+ &__text {
23
+ margin: 0;
24
+ font-family: var(--font-family-text);
25
+ font-weight: var(--font-weight-thin);
26
+ font-size: var(--font-size-base);
27
+ line-height: var(--line-height-base);
28
+ color: var(--color-text-primary);
29
+ }
30
+
31
+ &__link {
32
+ color: var(--color-primary-500);
33
+ text-decoration: underline;
34
+ text-decoration-color: var(--color-primary-300);
35
+ text-underline-offset: 0.15em;
36
+
37
+ &:hover {
38
+ text-decoration-color: var(--color-primary-500);
39
+ }
40
+
41
+ &:focus-visible,
42
+ &:active {
43
+ color: var(--color-primary-600);
44
+ text-decoration-color: var(--color-primary-600);
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,16 @@
1
+ //- Call for feedback component
2
+ //-
3
+ //- Examples:
4
+ //- +call-for-feedback()
5
+ //-
6
+ //- <ck:call-for-feedback />
7
+ //-
8
+ //- <call-for-feedback />
9
+ mixin call-for-feedback()
10
+ //- Stable id: at most one block per page (build fails if more); see validate-call-for-feedback-once.cjs.
11
+ aside.c-call-for-feedback( role='complementary' aria-labelledby='call-for-feedback-title' )
12
+ div.c-call-for-feedback__title#call-for-feedback-title Call for feedback
13
+ p.c-call-for-feedback__text
14
+ | Have an idea for future improvements? We'd love to hear from you! Share your thoughts and suggestions with us through our&nbsp;
15
+ a.c-call-for-feedback__link( href='https://ckeditor.com/contact/' ) contact form
16
+ | .
@@ -26,6 +26,7 @@ include ./card-learn-more-links/index
26
26
  include ./card/index
27
27
  include ./skeleton/index
28
28
  include ./fake-devtools/index
29
+ include ./call-for-feedback/index
29
30
  include ./iframe/index
30
31
  include ./tag/index
31
32
  include ./columns/index
@@ -35,6 +35,7 @@
35
35
  'card',
36
36
  'skeleton',
37
37
  'fake-devtools',
38
+ 'call-for-feedback',
38
39
  'iframe',
39
40
  'tag',
40
41
  'snippet-footer'