@redocly/theme 0.42.2 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/lib/components/Dropdown/DropdownMenu.d.ts +2 -0
  2. package/lib/components/Dropdown/DropdownMenu.js +3 -1
  3. package/lib/components/Loaders/SpinnerLoader.d.ts +5 -0
  4. package/lib/components/Loaders/SpinnerLoader.js +32 -0
  5. package/lib/components/Search/FilterFields/SearchFilterFieldSelect.d.ts +12 -0
  6. package/lib/components/Search/FilterFields/SearchFilterFieldSelect.js +113 -0
  7. package/lib/components/Search/FilterFields/SearchFilterFieldTags.d.ts +10 -0
  8. package/lib/components/Search/FilterFields/SearchFilterFieldTags.js +37 -0
  9. package/lib/components/Search/Search.js +1 -1
  10. package/lib/components/Search/SearchDialog.js +109 -27
  11. package/lib/components/Search/SearchFilter.d.ts +11 -0
  12. package/lib/components/Search/SearchFilter.js +71 -0
  13. package/lib/components/Search/SearchFilterField.d.ts +11 -0
  14. package/lib/components/Search/SearchFilterField.js +43 -0
  15. package/lib/components/Search/SearchGroups.d.ts +9 -0
  16. package/lib/components/Search/SearchGroups.js +69 -0
  17. package/lib/components/Search/SearchHighlight.d.ts +1 -1
  18. package/lib/components/Search/SearchHighlight.js +28 -5
  19. package/lib/components/Search/SearchInput.d.ts +1 -1
  20. package/lib/components/Search/SearchInput.js +5 -2
  21. package/lib/components/Search/SearchItem.d.ts +2 -2
  22. package/lib/components/Search/SearchItem.js +24 -15
  23. package/lib/components/Search/variables.js +48 -2
  24. package/lib/components/Segmented/Segmented.d.ts +2 -5
  25. package/lib/components/Select/Select.d.ts +2 -36
  26. package/lib/components/Select/Select.js +136 -98
  27. package/lib/components/Select/SelectInput.d.ts +23 -0
  28. package/lib/components/Select/SelectInput.js +129 -0
  29. package/lib/components/Select/variables.js +12 -1
  30. package/lib/components/Tag/Tag.d.ts +4 -2
  31. package/lib/components/Tag/Tag.js +40 -4
  32. package/lib/components/Tag/variables.dark.js +20 -5
  33. package/lib/components/Tag/variables.js +49 -17
  34. package/lib/components/VersionPicker/VersionPicker.d.ts +2 -3
  35. package/lib/components/VersionPicker/VersionPicker.js +13 -30
  36. package/lib/core/hooks/__mocks__/index.d.ts +2 -1
  37. package/lib/core/hooks/__mocks__/index.js +2 -1
  38. package/lib/core/hooks/__mocks__/search/use-search-filter.d.ts +9 -0
  39. package/lib/core/hooks/__mocks__/search/use-search-filter.js +14 -0
  40. package/lib/core/hooks/__mocks__/use-theme-hooks.d.ts +6 -1
  41. package/lib/core/hooks/__mocks__/use-theme-hooks.js +6 -1
  42. package/lib/core/hooks/index.d.ts +2 -1
  43. package/lib/core/hooks/index.js +2 -1
  44. package/lib/core/hooks/search/use-recent-searches.js +2 -0
  45. package/lib/core/hooks/{use-search.d.ts → search/use-search-dialog.d.ts} +1 -1
  46. package/lib/core/hooks/{use-search.js → search/use-search-dialog.js} +5 -5
  47. package/lib/core/hooks/search/use-search-filter.d.ts +9 -0
  48. package/lib/core/hooks/search/use-search-filter.js +50 -0
  49. package/lib/core/types/hooks.d.ts +17 -4
  50. package/lib/core/types/index.d.ts +1 -1
  51. package/lib/core/types/index.js +1 -1
  52. package/lib/core/types/l10n.d.ts +1 -2
  53. package/lib/core/types/search.d.ts +42 -2
  54. package/lib/core/types/select.d.ts +31 -0
  55. package/lib/core/types/{select-option.js → select.js} +1 -1
  56. package/lib/core/utils/index.d.ts +1 -0
  57. package/lib/core/utils/index.js +1 -0
  58. package/lib/core/utils/text-trimmer.d.ts +1 -0
  59. package/lib/core/utils/text-trimmer.js +16 -0
  60. package/lib/icons/ResetIcon/ResetIcon.d.ts +9 -0
  61. package/lib/icons/ResetIcon/ResetIcon.js +22 -0
  62. package/lib/icons/SettingsIcon/SettingsIcon.d.ts +9 -0
  63. package/lib/icons/SettingsIcon/SettingsIcon.js +23 -0
  64. package/lib/index.d.ts +8 -1
  65. package/lib/index.js +8 -1
  66. package/lib/markdoc/components/Cards/Card.js +6 -6
  67. package/package.json +3 -3
  68. package/src/components/Dropdown/DropdownMenu.tsx +2 -1
  69. package/src/components/Filter/FilterSelect.tsx +3 -3
  70. package/src/components/Loaders/SpinnerLoader.tsx +31 -0
  71. package/src/components/Search/FilterFields/SearchFilterFieldSelect.tsx +135 -0
  72. package/src/components/Search/FilterFields/SearchFilterFieldTags.tsx +61 -0
  73. package/src/components/Search/Search.tsx +2 -2
  74. package/src/components/Search/SearchDialog.tsx +183 -41
  75. package/src/components/Search/SearchFilter.tsx +90 -0
  76. package/src/components/Search/SearchFilterField.tsx +84 -0
  77. package/src/components/Search/SearchGroups.tsx +81 -0
  78. package/src/components/Search/SearchHighlight.tsx +29 -2
  79. package/src/components/Search/SearchInput.tsx +9 -3
  80. package/src/components/Search/SearchItem.tsx +39 -24
  81. package/src/components/Search/variables.ts +48 -2
  82. package/src/components/Segmented/Segmented.tsx +2 -2
  83. package/src/components/Select/Select.tsx +208 -157
  84. package/src/components/Select/SelectInput.tsx +201 -0
  85. package/src/components/Select/variables.ts +12 -1
  86. package/src/components/Tag/Tag.tsx +57 -6
  87. package/src/components/Tag/variables.dark.ts +20 -5
  88. package/src/components/Tag/variables.ts +49 -17
  89. package/src/components/VersionPicker/VersionPicker.tsx +15 -39
  90. package/src/core/hooks/__mocks__/index.ts +2 -1
  91. package/src/core/hooks/__mocks__/search/use-search-filter.ts +10 -0
  92. package/src/core/hooks/__mocks__/use-theme-hooks.ts +6 -1
  93. package/src/core/hooks/index.ts +2 -1
  94. package/src/core/hooks/search/use-recent-searches.ts +3 -0
  95. package/src/core/hooks/{use-search.ts → search/use-search-dialog.ts} +1 -1
  96. package/src/core/hooks/search/use-search-filter.ts +57 -0
  97. package/src/core/types/hooks.ts +25 -4
  98. package/src/core/types/index.ts +1 -1
  99. package/src/core/types/l10n.ts +110 -38
  100. package/src/core/types/search.ts +53 -2
  101. package/src/core/types/select.ts +33 -0
  102. package/src/core/utils/index.ts +1 -0
  103. package/src/core/utils/text-trimmer.ts +7 -0
  104. package/src/icons/ResetIcon/ResetIcon.tsx +26 -0
  105. package/src/icons/SettingsIcon/SettingsIcon.tsx +30 -0
  106. package/src/index.ts +8 -1
  107. package/src/markdoc/components/Cards/Card.tsx +15 -15
  108. package/lib/core/types/select-option.d.ts +0 -4
  109. package/src/core/types/select-option.ts +0 -4
  110. /package/lib/components/{Loading → Loaders}/Loading.d.ts +0 -0
  111. /package/lib/components/{Loading → Loaders}/Loading.js +0 -0
  112. /package/src/components/{Loading → Loaders}/Loading.tsx +0 -0
@@ -9,7 +9,7 @@ exports.tag = (0, styled_components_1.css) `
9
9
 
10
10
  --tag-border-width: 1px; //@presenter Border
11
11
  --tag-border-style: solid; //@presenter Border
12
- --tag-border-radius: var(--border-radius-xl); // @presenter BorderRadius
12
+ --tag-border-radius: var(--border-radius); // @presenter BorderRadius
13
13
  --tag-box-shadow: none; // @presenter Shadow
14
14
 
15
15
  --tag-status-dot-color-default: var(--color-persian-green-7);
@@ -22,8 +22,17 @@ exports.tag = (0, styled_components_1.css) `
22
22
  * @tokens Tag spacing
23
23
  */
24
24
 
25
- --tag-padding: 1px 8px; //@presenter Spacing
26
- --tag-large-padding: 4px 16px; //@presenter Spacing
25
+ --tag-padding-vertical: 1px; //@presenter Spacing
26
+ --tag-padding-horizontal: 8px; //@presenter Spacing
27
+ --tag-padding: 0 var(--tag-padding-horizontal); //@presenter Spacing
28
+ --tag-content-padding: var(--tag-padding-vertical) 0; //@presenter Spacing
29
+ --tag-content-gap: 4px; //@presenter Spacing
30
+
31
+ --tag-large-padding-vertical: 4px; //@presenter Spacing
32
+ --tag-large-padding-horizontal: 16px; //@presenter Spacing
33
+ --tag-large-padding: 0 var(--tag-large-padding-horizontal); //@presenter Spacing
34
+ --tag-large-content-padding: var(--tag-large-padding-vertical); //@presenter Spacing
35
+
27
36
  --tag-margin: 0 5px 0 0; //@presenter Spacing
28
37
  --tag-gap: 5px; //@presenter Spacing
29
38
 
@@ -33,6 +42,7 @@ exports.tag = (0, styled_components_1.css) `
33
42
 
34
43
  .tag-size-large {
35
44
  --tag-padding: var(--tag-large-padding);
45
+ --tag-content-padding: var(--tag-large-content-padding);
36
46
  --tag-font-size: var(--font-size-base);
37
47
  }
38
48
 
@@ -67,6 +77,7 @@ exports.tag = (0, styled_components_1.css) `
67
77
  --tag-color: var(--text-color-primary); // @presenter Color
68
78
  --tag-bg-color: var(--color-warm-grey-2); // @presenter Color
69
79
  --tag-border-color: var(--border-color-primary); // @presenter Color
80
+ --tag-close-button-bg-color-hover: var(--color-warm-grey-3); // @presenter Color
70
81
  }
71
82
 
72
83
  .tag-green,
@@ -75,6 +86,7 @@ exports.tag = (0, styled_components_1.css) `
75
86
  --tag-color: var(--color-success-active); // @presenter Color
76
87
  --tag-bg-color: var(--color-success-bg); // @presenter Color
77
88
  --tag-border-color: var(--color-success-active); // @presenter Color
89
+ --tag-close-button-bg-color-hover: var(--color-success-bg-hover); // @presenter Color
78
90
  }
79
91
 
80
92
  .tag-red,
@@ -83,6 +95,7 @@ exports.tag = (0, styled_components_1.css) `
83
95
  --tag-color: var(--color-error-active); // @presenter Color
84
96
  --tag-bg-color: var(--color-error-bg); // @presenter Color
85
97
  --tag-border-color: var(--color-error-active); // @presenter Color
98
+ --tag-close-button-bg-color-hover: var(--color-error-hover); // @presenter Color
86
99
  }
87
100
 
88
101
  .tag-gold,
@@ -91,6 +104,7 @@ exports.tag = (0, styled_components_1.css) `
91
104
  --tag-color: var(--color-warning-active); // @presenter Color
92
105
  --tag-bg-color: var(--color-warning-bg); // @presenter Color
93
106
  --tag-border-color: var(--color-warning-active); // @presenter Color
107
+ --tag-close-button-bg-color-hover: var(--color-warning-hover); // @presenter Color
94
108
  }
95
109
 
96
110
  .tag-blue,
@@ -98,6 +112,7 @@ exports.tag = (0, styled_components_1.css) `
98
112
  --tag-color: var(--color-info-active); // @presenter Color
99
113
  --tag-bg-color: var(--color-info-bg); // @presenter Color
100
114
  --tag-border-color: var(--color-info-active); // @presenter Color
115
+ --tag-close-button-bg-color-hover: var(--color-info-hover); // @presenter Color
101
116
  }
102
117
 
103
118
  .tag-purple,
@@ -105,26 +120,24 @@ exports.tag = (0, styled_components_1.css) `
105
120
  --tag-color: var(--color-purple-7); // @presenter Color
106
121
  --tag-bg-color: var(--color-purple-1); // @presenter Color
107
122
  --tag-border-color: var(--color-purple-7); // @presenter Color
123
+ --tag-close-button-bg-color-hover: var(--color-purple-3); // @presenter Color
108
124
  }
109
125
 
110
126
  .tag-cyan,
111
- .tag-option {
127
+ .tag-option,
128
+ .tag-geekblue,
129
+ .tag-link {
112
130
  --tag-color: var(--color-turquoise-7); // @presenter Color
113
131
  --tag-bg-color: var(--color-turquoise-1); // @presenter Color
114
132
  --tag-border-color: var(--color-turquoise-7); // @presenter Color
133
+ --tag-close-button-bg-color-hover: var(--color-turquoise-3); // @presenter Color
115
134
  }
116
135
 
117
136
  .tag-yellow {
118
137
  --tag-color: var(--color-carrot-7); // @presenter Color
119
138
  --tag-bg-color: var(--color-carrot-1); // @presenter Color
120
139
  --tag-border-color: var(--color-carrot-7); // @presenter Color
121
- }
122
-
123
- .tag-geekblue,
124
- .tag-link {
125
- --tag-color: var(--color-turquoise-7); // @presenter Color
126
- --tag-bg-color: var(--color-turquoise-1); // @presenter Color
127
- --tag-border-color: var(--color-turquoise-7); // @presenter Color
140
+ --tag-close-button-bg-color-hover: var(--color-carrot-3); // @presenter Color
128
141
  }
129
142
 
130
143
  .tag-magenta,
@@ -132,18 +145,21 @@ exports.tag = (0, styled_components_1.css) `
132
145
  --tag-color: var(--color-magenta-7); // @presenter Color
133
146
  --tag-bg-color: var(--color-magenta-1); // @presenter Color
134
147
  --tag-border-color: var(--color-magenta-7); // @presenter Color
148
+ --tag-close-button-bg-color-hover: var(--color-magenta-3); // @presenter Color
135
149
  }
136
150
 
137
151
  .tag-lime {
138
152
  --tag-color: var(--color-green-7); // @presenter Color
139
153
  --tag-bg-color: none; // @presenter Color
140
154
  --tag-border-color: var(--color-green-7); // @presenter Color
155
+ --tag-close-button-bg-color-hover: var(--color-green-3); // @presenter Color
141
156
  }
142
157
 
143
158
  .tag-product {
144
159
  --tag-color: var(--color-warm-grey-7); // @presenter Color
145
160
  --tag-bg-color: transparent; // @presenter Color
146
161
  --tag-border-color: var(--color-warm-grey-4); // @presenter Color
162
+ --tag-close-button-bg-color-hover: var(--color-warm-grey-3); // @presenter Color
147
163
  }
148
164
 
149
165
  /**
@@ -158,12 +174,28 @@ exports.tag = (0, styled_components_1.css) `
158
174
  * @tokens Operation tag colors
159
175
  */
160
176
 
161
- --tag-operation-color-delete: #E70B46;
162
- --tag-operation-color-get: #25B869;
163
- --tag-operation-color-post: #1E65F5;
164
- --tag-operation-color-put: #F5901D;
165
- --tag-operation-color-patch: #F5C31D;
166
- --tag-operation-color-deprecated: var(--text-color-disabled);
177
+ --tag-operation-color-delete: #e70b46; // @presenter Color
178
+ --tag-operation-bg-color-delete: #fee2e9; // @presenter Color
179
+
180
+ --tag-operation-color-get: #25b869; // @presenter Color
181
+ --tag-operation-bg-color-get: #e5faef; // @presenter Color
182
+
183
+ --tag-operation-color-post: #1e65f5; // @presenter Color
184
+ --tag-operation-bg-color-post: #e2ebfe; // @presenter Color
185
+
186
+ --tag-operation-color-put: #f5901d; // @presenter Color
187
+ --tag-operation-bg-color-put: #fef1e2; // @presenter Color
188
+
189
+ --tag-operation-color-patch: #f5c31d; // @presenter Color
190
+ --tag-operation-bg-color-patch: #fdf6dd; // @presenter Color
191
+
192
+ --tag-operation-color-head: #5b4ccc; // @presenter Color
193
+ --tag-operation-bg-color-head: #e6e1fe; // @presenter Color
194
+
195
+ --tag-operation-color-options: #1a1c21; // @presenter Color
196
+ --tag-operation-bg-color-options: #ededf2; // @presenter Color
197
+
198
+ --tag-operation-color-deprecated: var(--text-color-disabled); // @presenter Color
167
199
 
168
200
  .tag-delete {
169
201
  --tag-color: var(--tag-operation-color-delete); // @presenter Color
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { Version } from '@redocly/config';
3
- import { Select, type SelectProps } from '../../components/Select/Select';
4
- export interface VersionPickerProps extends SelectProps {
5
- }
3
+ import type { SelectProps } from '../../core/types/select';
4
+ import { Select } from '../../components/Select/Select';
6
5
  export declare function VersionPicker(props: {
7
6
  versions?: Version[];
8
7
  onChange: (v: Version) => void;
@@ -31,6 +31,7 @@ const React = __importStar(require("react"));
31
31
  const styled_components_1 = __importDefault(require("styled-components"));
32
32
  const hooks_1 = require("../../core/hooks");
33
33
  const Select_1 = require("../../components/Select/Select");
34
+ const SelectInput_1 = require("../../components/Select/SelectInput");
34
35
  function VersionPicker(props) {
35
36
  var _a;
36
37
  const themeConfig = (0, hooks_1.useThemeConfig)();
@@ -38,22 +39,24 @@ function VersionPicker(props) {
38
39
  const { useTranslate } = (0, hooks_1.useThemeHooks)();
39
40
  const { translate } = useTranslate();
40
41
  const { versions = [], onChange } = props;
41
- const options = versions.map((version) => {
42
- return {
43
- element: version.label || version.version,
44
- value: version,
45
- active: version.active,
46
- };
47
- });
42
+ const options = versions.map(({ label, version, active }) => ({
43
+ element: label || version,
44
+ value: version,
45
+ active: active,
46
+ }));
47
+ const value = (_a = options.find((item) => item.active)) === null || _a === void 0 ? void 0 : _a.value;
48
48
  if (versionPicker === null || versionPicker === void 0 ? void 0 : versionPicker.hide) {
49
49
  return null;
50
50
  }
51
- const value = (_a = options.find((item) => item.active)) === null || _a === void 0 ? void 0 : _a.value;
51
+ const handleOnChange = (value) => {
52
+ const selectedVersion = versions.find((v) => v.version === value);
53
+ onChange(selectedVersion);
54
+ };
52
55
  if (!options.length && !(versionPicker === null || versionPicker === void 0 ? void 0 : versionPicker.showForUnversioned))
53
56
  return null;
54
57
  return (React.createElement(VersionsPickerWrapper, { "data-component-name": "VersionPicker/VersionPicker" },
55
58
  React.createElement(VersionPickerLabel, { "data-translation-key": "theme.versionPicker.label" }, translate('theme.versionPicker.label', 'Version:')),
56
- React.createElement(exports.VersionPickerSelect, { placeholder: translate('theme.versionPicker.unversioned', 'All versions'), disabled: !options.length, options: options, value: value, onChange: onChange })));
59
+ React.createElement(exports.VersionPickerSelect, { placeholder: translate('theme.versionPicker.unversioned', 'All versions'), disabled: !options.length, options: options, value: value, onChange: handleOnChange })));
57
60
  }
58
61
  exports.VersionPicker = VersionPicker;
59
62
  const VersionPickerLabel = styled_components_1.default.label `
@@ -72,32 +75,12 @@ exports.VersionPickerSelect = (0, styled_components_1.default)(Select_1.Select)
72
75
  line-height: var(--version-picker-line-height);
73
76
  color: var(--version-picker-text-color);
74
77
 
75
- ${Select_1.SelectInput} {
78
+ ${SelectInput_1.SelectInputWrapper} {
76
79
  border: var(--version-picker-input-border);
77
80
  border-radius: var(--version-picker-input-border-radius);
78
81
  padding: var(--version-picker-input-padding-vertical)
79
82
  var(--version-picker-input-padding-horizontal);
80
83
  }
81
-
82
- ${Select_1.SelectList} {
83
- right: 0;
84
- width: 100%;
85
- min-width: var(--version-picker-list-min-width);
86
- max-width: var(--version-picker-list-max-width);
87
- padding: var(--version-picker-list-padding);
88
- background-color: var(--version-picker-list-bg-color);
89
- border-radius: var(--version-picker-list-border-radius);
90
- box-shadow: var(--version-picker-list-box-shadow);
91
- }
92
-
93
- ${Select_1.SelectListItem} {
94
- border-radius: var(--version-picker-list-item-border-radius);
95
-
96
- & > * {
97
- padding: var(--version-picker-list-item-vertical-padding)
98
- var(--version-picker-list-item-horizontal-padding);
99
- }
100
- }
101
84
  `;
102
85
  const VersionsPickerWrapper = styled_components_1.default.div `
103
86
  display: flex;
@@ -4,6 +4,7 @@ export * from '../../../core/hooks/__mocks__/use-mobile-menu';
4
4
  export * from '../../../core/hooks/__mocks__/use-controlled-state';
5
5
  export * from '../../../core/hooks/__mocks__/search/use-recent-searches';
6
6
  export * from '../../../core/hooks/__mocks__/search/use-suggested-pages';
7
+ export * from '../../../core/hooks/__mocks__/search/use-search-filter';
7
8
  export * from '../../../core/hooks/menu/__mocks__/use-mobile-menu-items';
8
9
  export * from '../../../core/hooks/menu/use-collapse';
9
10
  export * from '../../../core/hooks/use-active-heading';
@@ -20,5 +21,5 @@ export * from '../../../core/hooks/menu/use-menu-item-expanded';
20
21
  export * from '../../../core/hooks/menu/use-mobile-menu-levels';
21
22
  export * from '../../../core/hooks/feedback/use-report-dialog';
22
23
  export * from '../../../core/hooks/use-product-picker';
23
- export * from '../../../core/hooks/use-search';
24
+ export * from '../../../core/hooks/search/use-search-dialog';
24
25
  export * from '../../../core/hooks/use-language-picker';
@@ -20,6 +20,7 @@ __exportStar(require("../../../core/hooks/__mocks__/use-mobile-menu"), exports);
20
20
  __exportStar(require("../../../core/hooks/__mocks__/use-controlled-state"), exports);
21
21
  __exportStar(require("../../../core/hooks/__mocks__/search/use-recent-searches"), exports);
22
22
  __exportStar(require("../../../core/hooks/__mocks__/search/use-suggested-pages"), exports);
23
+ __exportStar(require("../../../core/hooks/__mocks__/search/use-search-filter"), exports);
23
24
  __exportStar(require("../../../core/hooks/menu/__mocks__/use-mobile-menu-items"), exports);
24
25
  __exportStar(require("../../../core/hooks/menu/use-collapse"), exports);
25
26
  __exportStar(require("../../../core/hooks/use-active-heading"), exports);
@@ -36,6 +37,6 @@ __exportStar(require("../../../core/hooks/menu/use-menu-item-expanded"), exports
36
37
  __exportStar(require("../../../core/hooks/menu/use-mobile-menu-levels"), exports);
37
38
  __exportStar(require("../../../core/hooks/feedback/use-report-dialog"), exports);
38
39
  __exportStar(require("../../../core/hooks/use-product-picker"), exports);
39
- __exportStar(require("../../../core/hooks/use-search"), exports);
40
+ __exportStar(require("../../../core/hooks/search/use-search-dialog"), exports);
40
41
  __exportStar(require("../../../core/hooks/use-language-picker"), exports);
41
42
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,9 @@
1
+ /// <reference types="jest" />
2
+ export declare const useSearchFilter: jest.Mock<{
3
+ isFilterOpen: boolean;
4
+ onFacetReset: () => void;
5
+ onFilterChange: () => void;
6
+ onFilterToggle: () => void;
7
+ onFilterReset: () => void;
8
+ onTopFacetsReset: () => void;
9
+ }, [], any>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSearchFilter = void 0;
4
+ exports.useSearchFilter = jest.fn(() => {
5
+ return {
6
+ isFilterOpen: false,
7
+ onFacetReset: () => { },
8
+ onFilterChange: () => { },
9
+ onFilterToggle: () => { },
10
+ onFilterReset: () => { },
11
+ onTopFacetsReset: () => { },
12
+ };
13
+ });
14
+ //# sourceMappingURL=use-search-filter.js.map
@@ -30,12 +30,17 @@ export declare const useThemeHooks: jest.Mock<{
30
30
  }, [], any>;
31
31
  useCurrentProduct: jest.Mock<any, any, any>;
32
32
  useProducts: jest.Mock<never[], [], any>;
33
- useFuseSearch: jest.Mock<{
33
+ useSearch: jest.Mock<{
34
34
  query: jest.Mock<any, any, any>;
35
35
  setQuery: jest.Mock<any, any, any>;
36
36
  items: never[];
37
37
  isLoading: boolean;
38
38
  }, [], any>;
39
+ useFacetQuery: jest.Mock<{
40
+ searchFacet: null;
41
+ setSearchFacet: jest.Mock<any, any, any>;
42
+ setSearchFacetQuery: jest.Mock<any, any, any>;
43
+ }, [], any>;
39
44
  useUserMenu: jest.Mock<{
40
45
  userData: {
41
46
  isAuthenticated: boolean;
@@ -37,12 +37,17 @@ exports.useThemeHooks = jest.fn(() => ({
37
37
  })),
38
38
  useCurrentProduct: jest.fn(),
39
39
  useProducts: jest.fn(() => []),
40
- useFuseSearch: jest.fn(() => ({
40
+ useSearch: jest.fn(() => ({
41
41
  query: jest.fn().mockReturnValue(''),
42
42
  setQuery: jest.fn(),
43
43
  items: [],
44
44
  isLoading: false,
45
45
  })),
46
+ useFacetQuery: jest.fn(() => ({
47
+ searchFacet: null,
48
+ setSearchFacet: jest.fn(),
49
+ setSearchFacetQuery: jest.fn(),
50
+ })),
46
51
  useUserMenu: jest.fn(() => ({
47
52
  userData: {
48
53
  isAuthenticated: true,
@@ -24,6 +24,7 @@ export * from '../../core/hooks/use-tabs';
24
24
  export * from '../../core/hooks/use-focus-trap';
25
25
  export * from '../../core/hooks/use-language-picker';
26
26
  export * from '../../core/hooks/use-product-picker';
27
- export * from '../../core/hooks/use-search';
27
+ export * from '../../core/hooks/search/use-search-dialog';
28
+ export * from '../../core/hooks/search/use-search-filter';
28
29
  export * from '../../core/hooks/use-controlled-state';
29
30
  export * from '../../core/hooks/use-codeblock-tabs-controls';
@@ -40,7 +40,8 @@ __exportStar(require("../../core/hooks/use-tabs"), exports);
40
40
  __exportStar(require("../../core/hooks/use-focus-trap"), exports);
41
41
  __exportStar(require("../../core/hooks/use-language-picker"), exports);
42
42
  __exportStar(require("../../core/hooks/use-product-picker"), exports);
43
- __exportStar(require("../../core/hooks/use-search"), exports);
43
+ __exportStar(require("../../core/hooks/search/use-search-dialog"), exports);
44
+ __exportStar(require("../../core/hooks/search/use-search-filter"), exports);
44
45
  __exportStar(require("../../core/hooks/use-controlled-state"), exports);
45
46
  __exportStar(require("../../core/hooks/use-codeblock-tabs-controls"), exports);
46
47
  //# sourceMappingURL=index.js.map
@@ -17,6 +17,8 @@ function updateRecentSearches(value, isAdd) {
17
17
  if (!(0, utils_1.isBrowser)())
18
18
  return [];
19
19
  const recentSearches = getRecentSearches();
20
+ if (value === '')
21
+ return recentSearches;
20
22
  const valueIndex = recentSearches.indexOf(value);
21
23
  if (valueIndex !== -1)
22
24
  recentSearches.splice(valueIndex, 1);
@@ -1,4 +1,4 @@
1
- export declare function useSearch(): {
1
+ export declare function useSearchDialog(): {
2
2
  isOpen: boolean;
3
3
  onOpen: () => void;
4
4
  onClose: () => void;
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useSearch = void 0;
6
+ exports.useSearchDialog = void 0;
7
7
  const react_1 = require("react");
8
8
  const react_router_dom_1 = require("react-router-dom");
9
9
  const hotkeys_js_1 = __importDefault(require("hotkeys-js"));
10
- const hooks_1 = require("../../core/hooks");
11
- function useSearch() {
10
+ const hooks_1 = require("../../../core/hooks");
11
+ function useSearchDialog() {
12
12
  var _a, _b;
13
13
  const [isOpen, setIsOpen] = (0, react_1.useState)(false);
14
14
  const themeSettings = (0, hooks_1.useThemeConfig)();
@@ -40,5 +40,5 @@ function useSearch() {
40
40
  (0, react_1.useEffect)(onClose, [location]);
41
41
  return { isOpen, onOpen, onClose };
42
42
  }
43
- exports.useSearch = useSearch;
44
- //# sourceMappingURL=use-search.js.map
43
+ exports.useSearchDialog = useSearchDialog;
44
+ //# sourceMappingURL=use-search-dialog.js.map
@@ -0,0 +1,9 @@
1
+ import type { SearchFilterItem } from '../../../core/types';
2
+ export declare function useSearchFilter(filter: SearchFilterItem[], setFilter: React.Dispatch<React.SetStateAction<SearchFilterItem[]>>): {
3
+ onFacetReset: (field: string) => void;
4
+ onTopFacetsReset: () => void;
5
+ onFilterChange: (field: string, value: string | string[] | undefined, isTop?: boolean) => void;
6
+ onFilterReset: () => void;
7
+ onFilterToggle: () => void;
8
+ isFilterOpen: boolean;
9
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSearchFilter = void 0;
4
+ const react_1 = require("react");
5
+ function useSearchFilter(filter, setFilter) {
6
+ const [isFilterOpen, setIsFilterOpen] = (0, react_1.useState)(false);
7
+ const onFilterToggle = (0, react_1.useCallback)(() => {
8
+ setIsFilterOpen(!isFilterOpen);
9
+ }, [isFilterOpen]);
10
+ const onFilterChange = (field, value, isTop) => {
11
+ const values = value ? (Array.isArray(value) ? value : [value]) : [];
12
+ const _filter = [...filter];
13
+ const fieldIndex = _filter.findIndex((filter) => filter.field === field);
14
+ if (fieldIndex > -1) {
15
+ // filter field already exists
16
+ _filter[fieldIndex].values = values;
17
+ }
18
+ else {
19
+ if (!values.length)
20
+ return;
21
+ _filter.push({ field, values, isTop });
22
+ }
23
+ setFilter(_filter.filter((item) => item.values.length));
24
+ };
25
+ const onFilterReset = () => {
26
+ setFilter([]);
27
+ };
28
+ const onTopFacetsReset = () => {
29
+ const _filter = [...filter];
30
+ setFilter(_filter.filter((item) => !item.isTop));
31
+ };
32
+ const onFacetReset = (field) => {
33
+ const _filter = [...filter];
34
+ const fieldIndex = _filter.findIndex((filter) => filter.field === field);
35
+ if (fieldIndex !== -1) {
36
+ _filter[fieldIndex].values = [];
37
+ }
38
+ setFilter(_filter.filter((item) => item.values.length));
39
+ };
40
+ return {
41
+ onFacetReset,
42
+ onTopFacetsReset,
43
+ onFilterChange,
44
+ onFilterReset,
45
+ onFilterToggle,
46
+ isFilterOpen,
47
+ };
48
+ }
49
+ exports.useSearchFilter = useSearchFilter;
50
+ //# sourceMappingURL=use-search-filter.js.map
@@ -2,7 +2,7 @@ import type { PageProps, ResolvedNavItemWithLink, Version } from '@redocly/confi
2
2
  import type { Callback, TFunction as TFunc } from 'i18next';
3
3
  import type { To, Location } from 'react-router-dom';
4
4
  import type { CatalogConfig, ProductUiConfig } from '../../config';
5
- import type { UserMenuData, FilteredCatalog, ItemState, SearchDocument, SubmitFeedbackParams, TFunction, BreadcrumbItem, DrilldownMenuItemDetails } from '../../core/types';
5
+ import type { UserMenuData, FilteredCatalog, ItemState, SearchItemData, SubmitFeedbackParams, TFunction, BreadcrumbItem, DrilldownMenuItemDetails, SearchFacet, SearchFilterItem, SearchFacetQuery } from '../../core/types';
6
6
  export type ThemeHooks = {
7
7
  useTranslate: () => {
8
8
  translate: TFunction;
@@ -45,11 +45,24 @@ export type ThemeHooks = {
45
45
  location: Location;
46
46
  };
47
47
  useBreadcrumbs: () => BreadcrumbItem[];
48
- useFuseSearch: (product?: string) => {
48
+ useSearch: (product?: string) => {
49
49
  query: string;
50
50
  setQuery: React.Dispatch<React.SetStateAction<string>>;
51
- items: SearchDocument[] | null;
52
- isLoading: boolean;
51
+ filter: SearchFilterItem[];
52
+ setFilter: React.Dispatch<React.SetStateAction<SearchFilterItem[]>>;
53
+ items: Record<string, SearchItemData[] | null>;
54
+ isSearchLoading: boolean;
55
+ facets: SearchFacet[];
56
+ setLoadMore: React.Dispatch<React.SetStateAction<{
57
+ groupKey: string;
58
+ offset: number;
59
+ } | undefined>>;
60
+ advancedSearch?: boolean;
61
+ };
62
+ useFacetQuery: (field: string) => {
63
+ searchFacet: SearchFacet | null;
64
+ setSearchFacet: React.Dispatch<React.SetStateAction<SearchFacet | null>>;
65
+ setSearchFacetQuery: React.Dispatch<React.SetStateAction<SearchFacetQuery | null>>;
53
66
  };
54
67
  useSidebarItems: (activeVersion?: Version | null) => {
55
68
  currentItems: ItemState[];
@@ -6,7 +6,7 @@ export * from '../../core/types/hooks';
6
6
  export * from '../../core/types/markdown';
7
7
  export * from '../../core/types/navbar';
8
8
  export * from '../../core/types/search';
9
- export * from '../../core/types/select-option';
9
+ export * from '../../core/types/select';
10
10
  export * from '../../core/types/sidebar';
11
11
  export * from '../../core/types/filter';
12
12
  export * from '../../core/types/user-menu';
@@ -22,7 +22,7 @@ __exportStar(require("../../core/types/hooks"), exports);
22
22
  __exportStar(require("../../core/types/markdown"), exports);
23
23
  __exportStar(require("../../core/types/navbar"), exports);
24
24
  __exportStar(require("../../core/types/search"), exports);
25
- __exportStar(require("../../core/types/select-option"), exports);
25
+ __exportStar(require("../../core/types/select"), exports);
26
26
  __exportStar(require("../../core/types/sidebar"), exports);
27
27
  __exportStar(require("../../core/types/filter"), exports);
28
28
  __exportStar(require("../../core/types/user-menu"), exports);
@@ -1,6 +1,5 @@
1
1
  import type { TOptions } from 'i18next';
2
- export type TranslationKey = 'dev.newApp' | 'dev.newApp.text' | 'dev.sidebar.header' | 'dev.sidebar.footer.text' | 'dev.create.app.dialog.appName.placeholder' | 'dev.create.app.dialog.appName.error' | 'dev.create.app.dialog.selectAPIs' | 'dev.create.app.dialog.description' | 'dev.create.app.dialog.description.placeholder' | 'dev.create.app.dialog.create' | 'dev.create.app.dialog.cancel' | 'dev.main.tab.appKeys' | 'dev.main.tab.logs' | 'dev.app.description.title' | 'dev.edit.description.dialog.title' | 'dev.edit.description.dialog.save' | 'dev.edit.description.dialog.cancel' | 'dev.edit.apis.dialog.selectedAPIs' | 'dev.app.key.create' | 'dev.create.key.dialog.title' | 'dev.create.key.dialog.create' | 'dev.create.key.dialog.cancel' | 'dev.app.edit' | 'dev.app.delete' | 'dev.edit.app.dialog.title' | 'dev.edit.app.dialog.save' | 'dev.edit.app.dialog.cancel' | 'dev.delete.app.dialog.title' | 'dev.delete.app.dialog.confirmation' | 'dev.delete.app.dialog.delete' | 'dev.delete.app.dialog.cancel' | 'dev.app.key.roll' | 'dev.roll.key.dialog.title' | 'dev.roll.key.dialog.apiKey' | 'dev.roll.key.dialog.expires' | 'dev.roll.key.dialog.confirmation' | 'dev.roll.key.dialog.cancel' | 'dev.roll.key.dialog.roll' | 'dev.update.key.dialog.title' | 'dev.update.key.dialog.update' | 'dev.update.key.dialog.cancel' | 'dev.app.key.api.name' | 'dev.app.key.api.status' | 'dev.app.key.api.edit' | 'dev.edit.apis.dialog.title' | 'dev.edit.apis.dialog.apiKey' | 'dev.edit.apis.dialog.save' | 'dev.edit.apis.dialog.cancel' | 'dev.select.placeholder' | 'dev.app.overview.status.pending' | 'dev.app.overview.status.approved' | 'dev.app.overview.status.revoked' | 'dev.app.overview.status' | 'dev.app.overview.non-production' | 'dev.app.overview.production' | 'dev.app.overview.clientId' | 'dev.app.overview.apiKey' | 'dev.app.key.revoke' | 'dev.revoke.key.dialog.title' | 'dev.revoke.key.dialog.apiKey' | 'dev.revoke.key.dialog.expires' | 'dev.revoke.key.dialog.confirmation' | 'dev.revoke.key.dialog.revoke' | 'dev.revoke.key.dialog.cancel' | 'dev.app.overview.expires' | 'dev.app.overview.created' | 'dev.app.overview.visibilityToggle.hide' | 'dev.app.overview.visibilityToggle.show' | 'theme.search.noResults' | 'theme.search.keys.navigate' | 'theme.search.keys.select' | 'theme.search.keys.exit' | 'theme.search.label' | 'theme.search.cancel' | 'theme.search.recent' | 'theme.search.navbar.label' | 'theme.search.suggested' | 'theme.toc.header' | 'theme.footer.copyrightText' | 'theme.page.homeButton' | 'theme.page.forbidden.title' | 'theme.page.notFound.title' | 'theme.page.notFound.description' | 'theme.page.lastUpdated.timeago' | 'theme.page.lastUpdated.on' | 'theme.catalog.filters.placeholder' | 'theme.catalog.filters.title' | 'theme.catalog.filters.clearAll' | 'theme.catalog.filters.select.addFilter' | 'theme.catalog.filters.select.all' | 'theme.catalog.filters.done' | 'theme.sidebar.menu.backLabel' | 'theme.sidebar.actions.show' | 'theme.sidebar.actions.hide' | 'theme.sidebar.actions.changeLayout' | 'theme.versionPicker.label' | 'theme.versionPicker.unversioned' | 'theme.codeSnippet.copy.buttonText' | 'theme.codeSnippet.copy.tooltipText' | 'theme.codeSnippet.copy.toasterText' | 'theme.markdown.editPage.text' | 'theme.feedback.settings.comment.submitText' | 'theme.feedback.settings.comment.label' | 'theme.feedback.settings.comment.send' | 'theme.feedback.settings.comment.cancel' | 'theme.feedback.settings.comment.satisfiedLabel' | 'theme.feedback.settings.comment.neutralLabel' | 'theme.feedback.settings.comment.dissatisfiedLabel' | 'theme.feedback.settings.submitText' | 'theme.feedback.settings.label' | 'theme.feedback.settings.reasons.label' | 'theme.feedback.settings.reasons.send' | 'theme.feedback.settings.comment.likeLabel' | 'theme.feedback.settings.comment.dislikeLabel' | 'theme.feedback.sentiment.thumbUp' | 'theme.feedback.sentiment.thumbDown' | 'theme.feedback.settings.leftScaleLabel' | 'theme.feedback.settings.rightScaleLabel' | 'theme.codeSnippet.report.buttonText' | 'theme.codeSnippet.report.tooltipText' | 'theme.codeSnippet.report.label' | 'theme.userMenu.login' | 'theme.userMenu.logout' | 'theme.userMenu.devOnboardingLabel' | 'theme.mobileMenu.mainMenu' | 'theme.mobileMenu.previous' | 'theme.mobileMenu.products' | 'theme.page.nextButton' | 'theme.page.previousButton';
3
- export type GraphQLTranslationKey = 'graphql.sidebar.group.queries' | 'graphql.sidebar.group.mutations' | 'graphql.sidebar.group.subscriptions' | 'graphql.sidebar.group.directives' | 'graphql.sidebar.group.objects' | 'graphql.sidebar.group.interfaces' | 'graphql.sidebar.group.unions' | 'graphql.sidebar.group.enums' | 'graphql.sidebar.group.inputs' | 'graphql.sidebar.group.scalars' | 'graphql.sidebar.group.scalars' | 'graphql.content.arguments.label' | 'graphql.content.arguments.show' | 'graphql.content.arguments.hide' | 'graphql.content.returnTypes.label' | 'graphql.content.returnTypes.show' | 'graphql.content.returnTypes.hide' | 'graphql.content.defaultValue' | 'graphql.content.deprecationReason' | 'graphql.content.implementedInterfaces' | 'graphql.content.argumentsHere' | 'graphql.content.nonNull' | 'graphql.content.required' | 'graphql.content.deprecated' | 'graphql.rightSection.variables' | 'graphql.rightSection.querySample' | 'graphql.rightSection.mutationSample' | 'graphql.rightSection.subscriptionSample' | 'graphql.rightSection.responseSample' | 'graphql.rightSection.locations' | 'graphql.rightSection.sample' | 'graphql.rightSection.referenced' | 'graphql.navigation.next' | 'graphql.navigation.previous';
2
+ export type TranslationKey = 'dev.newApp' | 'dev.newApp.text' | 'dev.sidebar.header' | 'dev.sidebar.footer.text' | 'dev.create.app.dialog.appName.placeholder' | 'dev.create.app.dialog.appName.error' | 'dev.create.app.dialog.selectAPIs' | 'dev.create.app.dialog.description' | 'dev.create.app.dialog.description.placeholder' | 'dev.create.app.dialog.create' | 'dev.create.app.dialog.cancel' | 'dev.main.tab.appKeys' | 'dev.main.tab.logs' | 'dev.app.description.title' | 'dev.edit.description.dialog.title' | 'dev.edit.description.dialog.save' | 'dev.edit.description.dialog.cancel' | 'dev.edit.apis.dialog.selectedAPIs' | 'dev.app.key.create' | 'dev.create.key.dialog.title' | 'dev.create.key.dialog.create' | 'dev.create.key.dialog.cancel' | 'dev.app.edit' | 'dev.app.delete' | 'dev.edit.app.dialog.title' | 'dev.edit.app.dialog.save' | 'dev.edit.app.dialog.cancel' | 'dev.delete.app.dialog.title' | 'dev.delete.app.dialog.confirmation' | 'dev.delete.app.dialog.delete' | 'dev.delete.app.dialog.cancel' | 'dev.app.key.roll' | 'dev.roll.key.dialog.title' | 'dev.roll.key.dialog.apiKey' | 'dev.roll.key.dialog.expires' | 'dev.roll.key.dialog.confirmation' | 'dev.roll.key.dialog.cancel' | 'dev.roll.key.dialog.roll' | 'dev.update.key.dialog.title' | 'dev.update.key.dialog.update' | 'dev.update.key.dialog.cancel' | 'dev.app.key.api.name' | 'dev.app.key.api.status' | 'dev.app.key.api.edit' | 'dev.edit.apis.dialog.title' | 'dev.edit.apis.dialog.apiKey' | 'dev.edit.apis.dialog.save' | 'dev.edit.apis.dialog.cancel' | 'dev.select.placeholder' | 'dev.app.overview.status.pending' | 'dev.app.overview.status.approved' | 'dev.app.overview.status.revoked' | 'dev.app.overview.status' | 'dev.app.overview.non-production' | 'dev.app.overview.production' | 'dev.app.overview.clientId' | 'dev.app.overview.apiKey' | 'dev.app.key.revoke' | 'dev.revoke.key.dialog.title' | 'dev.revoke.key.dialog.apiKey' | 'dev.revoke.key.dialog.expires' | 'dev.revoke.key.dialog.confirmation' | 'dev.revoke.key.dialog.revoke' | 'dev.revoke.key.dialog.cancel' | 'dev.app.overview.expires' | 'dev.app.overview.created' | 'dev.app.overview.visibilityToggle.hide' | 'dev.app.overview.visibilityToggle.show' | 'theme.search.loading' | 'theme.search.noResults.title' | 'theme.search.noResults.description' | 'theme.search.keys.navigate' | 'theme.search.keys.select' | 'theme.search.keys.exit' | 'theme.search.label' | 'theme.search.cancel' | 'theme.search.recent' | 'theme.search.navbar.label' | 'theme.search.suggested' | 'theme.search.showMore' | 'theme.search.filter.title' | 'theme.search.filter.reset' | 'theme.search.filter.field.reset' | 'theme.toc.header' | 'theme.footer.copyrightText' | 'theme.page.homeButton' | 'theme.page.forbidden.title' | 'theme.page.notFound.title' | 'theme.page.notFound.description' | 'theme.page.lastUpdated.timeago' | 'theme.page.lastUpdated.on' | 'theme.catalog.filters.placeholder' | 'theme.catalog.filters.title' | 'theme.catalog.filters.clearAll' | 'theme.catalog.filters.select.addFilter' | 'theme.catalog.filters.select.all' | 'theme.catalog.filters.done' | 'theme.sidebar.menu.backLabel' | 'theme.sidebar.actions.show' | 'theme.sidebar.actions.hide' | 'theme.sidebar.actions.changeLayout' | 'theme.versionPicker.label' | 'theme.versionPicker.unversioned' | 'theme.codeSnippet.copy.buttonText' | 'theme.codeSnippet.copy.tooltipText' | 'theme.codeSnippet.copy.toasterText' | 'theme.markdown.editPage.text' | 'theme.feedback.settings.comment.submitText' | 'theme.feedback.settings.comment.label' | 'theme.feedback.settings.comment.send' | 'theme.feedback.settings.comment.cancel' | 'theme.feedback.settings.comment.satisfiedLabel' | 'theme.feedback.settings.comment.neutralLabel' | 'theme.feedback.settings.comment.dissatisfiedLabel' | 'theme.feedback.settings.submitText' | 'theme.feedback.settings.label' | 'theme.feedback.settings.reasons.label' | 'theme.feedback.settings.reasons.send' | 'theme.feedback.settings.comment.likeLabel' | 'theme.feedback.settings.comment.dislikeLabel' | 'theme.feedback.sentiment.thumbUp' | 'theme.feedback.sentiment.thumbDown' | 'theme.feedback.settings.leftScaleLabel' | 'theme.feedback.settings.rightScaleLabel' | 'theme.codeSnippet.report.buttonText' | 'theme.codeSnippet.report.tooltipText' | 'theme.codeSnippet.report.label' | 'theme.userMenu.login' | 'theme.userMenu.logout' | 'theme.userMenu.devOnboardingLabel' | 'theme.mobileMenu.mainMenu' | 'theme.mobileMenu.previous' | 'theme.mobileMenu.products' | 'theme.page.nextButton' | 'theme.page.previousButton' | 'openapi.download.description.title' | 'openapi.info.title' | 'openapi.info.contact.url' | 'openapi.info.contact.name' | 'openapi.info.license' | 'openapi.info.termsOfService' | 'openapi.info.metadata.title' | 'openapi.key' | 'openapi.value' | 'openapi.enum' | 'openapi.items' | 'openapi.default' | 'openapi.variable' | 'openapi.variables' | 'openapi.actions.show' | 'openapi.actions.hide' | 'openapi.actions.more' | 'openapi.languages.title' | 'openapi.servers.title' | 'openapi.operations' | 'openapi.webhooks' | 'openapi.description' | 'openapi.badges.deprecated' | 'openapi.badges.required' | 'openapi.badges.webhook' | 'openapi.request' | 'openapi.path' | 'openapi.query' | 'openapi.cookie' | 'openapi.header' | 'openapi.body' | 'openapi.responses' | 'openapi.response' | 'openapi.callbacks' | 'openapi.callbackRequest' | 'openapi.callbackResponse' | 'openapi.payload' | 'openapi.discriminator' | 'openapi.contentType' | 'openapi.tryIt' | 'openapi.loading' | 'openapi.example' | 'openapi.examples' | 'openapi.additionalProperties' | 'openapi.patternProperties' | 'openapi.required' | 'openapi.recursive' | 'openapi.deprecated' | 'openapi.hideExample' | 'openapi.showExample' | 'openapi.expandAll' | 'openapi.collapseAll' | 'openapi.pdfFileSample' | 'openapi.noResponseExample' | 'openapi.noRequestPayload' | 'openapi.hidePattern' | 'openapi.showPattern' | 'openapi.authorizationUrl' | 'openapi.tokenUrl' | 'openapi.refreshUrl' | 'openapi.scopes' | 'openapi.security' | 'openapi.httpAuthorizationScheme' | 'openapi.bearerFormat' | 'openapi.parameterName' | 'openapi.flowType' | 'openapi.connectUrl' | 'openapi.requiredScopes' | 'openapi.unsupportedLanguage' | 'openapi.failedToGenerateCodeSample' | 'graphql.queries' | 'graphql.mutations' | 'graphql.subscriptions' | 'graphql.directives' | 'graphql.objects' | 'graphql.interfaces' | 'graphql.unions' | 'graphql.enums' | 'graphql.inputs' | 'graphql.scalars' | 'graphql.arguments.label' | 'graphql.arguments.show' | 'graphql.arguments.hide' | 'graphql.arguments.here' | 'graphql.returnTypes.label' | 'graphql.returnTypes.show' | 'graphql.returnTypes.hide' | 'graphql.possibleTypes' | 'graphql.defaultValue' | 'graphql.deprecationReason' | 'graphql.implementedInterfaces' | 'graphql.nonNull' | 'graphql.required' | 'graphql.deprecated' | 'graphql.variables' | 'graphql.querySample' | 'graphql.mutationSample' | 'graphql.subscriptionSample' | 'graphql.responseSample' | 'graphql.locations' | 'graphql.sample' | 'graphql.referenced';
4
3
  export type Locale = {
5
4
  code: string;
6
5
  name: string;
@@ -12,9 +12,9 @@ export type SearchDocument = {
12
12
  title: string | string[];
13
13
  text: string | string[];
14
14
  path?: string[];
15
- httpVerb?: string;
15
+ httpMethod?: string;
16
+ httpPath?: string | string[];
16
17
  deprecated?: boolean;
17
- pathName?: string | string[];
18
18
  parameters?: OperationParameter[];
19
19
  metadata?: Record<string, any>;
20
20
  version?: string;
@@ -29,4 +29,44 @@ export type SearchDocument = {
29
29
  fsPath?: string;
30
30
  };
31
31
  badges?: ItemBadge[];
32
+ facets?: Record<string, string>;
33
+ tags?: string[];
34
+ rbacTeams?: string[];
35
+ };
36
+ export type ParameterHighlight = {
37
+ name: string;
38
+ description: string;
39
+ place: string;
40
+ path: string[];
41
+ };
42
+ export type SearchItemData = {
43
+ document: SearchDocument;
44
+ highlight: Record<string, string> & {
45
+ parameters?: ParameterHighlight[];
46
+ path?: string[];
47
+ };
48
+ };
49
+ export type SearchFacet = {
50
+ name: string;
51
+ field: string;
52
+ type: SearchFacetType;
53
+ values: string[] | SearchFacetCount[];
54
+ isTop?: boolean;
55
+ index?: number;
56
+ };
57
+ export type SearchFacetCount = {
58
+ value: string;
59
+ count: number;
60
+ isCounterVisible?: boolean;
61
+ };
62
+ export type SearchFacetQuery = {
63
+ query: string;
64
+ filter: SearchFilterItem[];
65
+ facetQuery: string;
66
+ };
67
+ export type SearchFacetType = 'input' | 'multi-select' | 'select' | 'switch' | 'radio' | 'tags' | 'checkbox';
68
+ export type SearchFilterItem = {
69
+ field: string;
70
+ values: string[];
71
+ isTop?: boolean;
32
72
  };