@redocly/theme 0.59.0-next.4 → 0.59.0-rc.2

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 (75) hide show
  1. package/LICENSE +1 -7
  2. package/lib/components/Buttons/AIAssistantButton.js +1 -5
  3. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations.js +1 -1
  4. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.js +1 -1
  5. package/lib/components/Catalog/CatalogTagsWithTooltip.js +1 -1
  6. package/lib/components/Dropdown/Dropdown.d.ts +2 -16
  7. package/lib/components/Dropdown/Dropdown.js +5 -5
  8. package/lib/components/Menu/MenuItem.js +1 -1
  9. package/lib/components/Navbar/NavbarItem.js +3 -3
  10. package/lib/components/OpenApiDocs/hooks/AdditionalOverviewInfo.d.ts +1 -0
  11. package/lib/components/OpenApiDocs/hooks/AdditionalOverviewInfo.js +11 -0
  12. package/lib/components/OpenApiDocs/hooks/AfterOpenApiDescription.d.ts +1 -0
  13. package/lib/components/OpenApiDocs/hooks/AfterOpenApiDescription.js +5 -0
  14. package/lib/components/Search/FilterFields/SearchFilterFieldTags.js +2 -1
  15. package/lib/components/Search/SearchAiConversationInput.d.ts +1 -2
  16. package/lib/components/Search/SearchAiConversationInput.js +3 -11
  17. package/lib/components/Search/SearchDialog.js +3 -15
  18. package/lib/components/Search/SearchGroups.js +2 -2
  19. package/lib/components/Search/variables.js +1 -5
  20. package/lib/components/Select/SelectInput.js +1 -1
  21. package/lib/components/Select/variables.js +2 -2
  22. package/lib/components/Tag/Tag.d.ts +1 -2
  23. package/lib/components/Tag/Tag.js +17 -66
  24. package/lib/components/Tag/variables.dark.js +36 -135
  25. package/lib/components/Tag/variables.js +61 -78
  26. package/lib/core/constants/search.d.ts +4 -5
  27. package/lib/core/constants/search.js +5 -4
  28. package/lib/core/hooks/use-page-actions.d.ts +1 -1
  29. package/lib/core/hooks/use-page-actions.js +24 -1
  30. package/lib/core/hooks/use-tabs.d.ts +2 -3
  31. package/lib/core/hooks/use-tabs.js +57 -115
  32. package/lib/core/hooks/use-telemetry-fallback.d.ts +0 -1
  33. package/lib/core/hooks/use-telemetry-fallback.js +0 -1
  34. package/lib/core/types/hooks.d.ts +2 -2
  35. package/lib/ext/process-scorecard.d.ts +5 -0
  36. package/lib/ext/process-scorecard.js +11 -0
  37. package/lib/icons/AiStarsIcon/AiStarsIcon.js +2 -11
  38. package/lib/icons/RedoclyIcon/RedoclyIcon.js +7 -4
  39. package/lib/index.d.ts +2 -0
  40. package/lib/index.js +2 -0
  41. package/lib/markdoc/components/Tabs/TabList.d.ts +1 -3
  42. package/lib/markdoc/components/Tabs/TabList.js +47 -197
  43. package/lib/markdoc/components/Tabs/Tabs.d.ts +1 -2
  44. package/lib/markdoc/components/Tabs/Tabs.js +12 -57
  45. package/package.json +5 -5
  46. package/src/components/Buttons/AIAssistantButton.tsx +1 -5
  47. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations.tsx +1 -1
  48. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.tsx +1 -1
  49. package/src/components/Catalog/CatalogTagsWithTooltip.tsx +5 -1
  50. package/src/components/Dropdown/Dropdown.tsx +79 -84
  51. package/src/components/Menu/MenuItem.tsx +0 -1
  52. package/src/components/Navbar/NavbarItem.tsx +5 -6
  53. package/src/components/OpenApiDocs/hooks/AdditionalOverviewInfo.tsx +9 -0
  54. package/src/components/OpenApiDocs/hooks/AfterOpenApiDescription.tsx +1 -0
  55. package/src/components/Search/FilterFields/SearchFilterFieldTags.tsx +3 -3
  56. package/src/components/Search/SearchAiConversationInput.tsx +2 -12
  57. package/src/components/Search/SearchDialog.tsx +3 -15
  58. package/src/components/Search/SearchGroups.tsx +0 -2
  59. package/src/components/Search/variables.ts +1 -5
  60. package/src/components/Select/SelectInput.tsx +0 -1
  61. package/src/components/Select/variables.ts +2 -2
  62. package/src/components/Tag/Tag.tsx +19 -35
  63. package/src/components/Tag/variables.dark.ts +36 -135
  64. package/src/components/Tag/variables.ts +61 -78
  65. package/src/core/constants/search.ts +4 -8
  66. package/src/core/hooks/use-page-actions.ts +33 -2
  67. package/src/core/hooks/use-tabs.ts +86 -168
  68. package/src/core/hooks/use-telemetry-fallback.ts +0 -1
  69. package/src/core/types/hooks.ts +1 -5
  70. package/src/ext/process-scorecard.ts +13 -0
  71. package/src/icons/AiStarsIcon/AiStarsIcon.tsx +2 -11
  72. package/src/icons/RedoclyIcon/RedoclyIcon.tsx +22 -4
  73. package/src/index.ts +2 -0
  74. package/src/markdoc/components/Tabs/TabList.tsx +105 -312
  75. package/src/markdoc/components/Tabs/Tabs.tsx +11 -136
@@ -6,20 +6,15 @@ const react_1 = require("react");
6
6
  const react_router_dom_1 = require("react-router-dom");
7
7
  const MORE_BUTTON_WIDTH = 80;
8
8
  const TABS_GAP = 8;
9
- function useTabs({ activeTab, onTabChange, totalTabs, containerRef, }) {
9
+ function useTabs({ activeTab, onTabChange, totalTabs, containerRef }) {
10
10
  const [tabs, setTabs] = (0, react_1.useState)({
11
11
  visible: Array.from({ length: totalTabs }, (_, i) => i),
12
12
  overflow: [],
13
13
  });
14
- const [isReady, setIsReady] = (0, react_1.useState)(false);
15
- const isFirstCalculation = (0, react_1.useRef)(true);
16
14
  const tabRefs = (0, react_1.useRef)([]);
17
15
  const tabWidthsRef = (0, react_1.useRef)([]);
18
16
  const tabLabelsRef = (0, react_1.useRef)([]);
19
- const activeTabRef = (0, react_1.useRef)(activeTab);
20
- const calculateVisibleTabsRef = (0, react_1.useRef)(null);
21
- // Synchronously update ref before any callbacks or effects run
22
- activeTabRef.current = activeTab;
17
+ const allTabsHidden = (0, react_1.useMemo)(() => tabs.visible.length === 0, [tabs.visible]);
23
18
  const setTabRef = (0, react_1.useCallback)((element, index) => {
24
19
  tabRefs.current[index] = element;
25
20
  const width = element === null || element === void 0 ? void 0 : element.offsetWidth;
@@ -30,25 +25,18 @@ function useTabs({ activeTab, onTabChange, totalTabs, containerRef, }) {
30
25
  if (label) {
31
26
  tabLabelsRef.current[index] = label;
32
27
  }
33
- // Trigger calculation once all tabs are registered
34
- if (isFirstCalculation.current &&
35
- tabWidthsRef.current.length >= totalTabs &&
36
- tabLabelsRef.current.length >= totalTabs &&
37
- calculateVisibleTabsRef.current) {
38
- requestAnimationFrame(calculateVisibleTabsRef.current);
39
- }
40
- }, [totalTabs]);
41
- const focusTab = (0, react_1.useCallback)((index) => {
28
+ }, []);
29
+ const focusTab = (index) => {
42
30
  const currentElement = tabRefs.current[index];
43
31
  currentElement === null || currentElement === void 0 ? void 0 : currentElement.focus();
44
- }, []);
32
+ };
45
33
  const onTabSelect = (0, react_1.useCallback)((index) => {
46
34
  var _a;
47
35
  focusTab(index);
48
36
  const label = (_a = tabRefs.current[index]) === null || _a === void 0 ? void 0 : _a.getAttribute('data-label');
49
37
  if (label)
50
38
  onTabChange(label);
51
- }, [onTabChange, focusTab]);
39
+ }, [onTabChange]);
52
40
  const handleKeyboard = (0, react_1.useCallback)((event, index) => {
53
41
  let newIndex = index;
54
42
  if (event.key === 'ArrowRight') {
@@ -71,155 +59,109 @@ function useTabs({ activeTab, onTabChange, totalTabs, containerRef, }) {
71
59
  onTabSelect(newIndex);
72
60
  }, [totalTabs, onTabSelect]);
73
61
  const replaceLastVisibleTabWithClickedOverflowTab = (0, react_1.useCallback)((clickedIndex) => {
74
- setTabs((prevTabs) => {
75
- const { visible: visibleTabs, overflow: overflowTabs } = prevTabs;
76
- const sortedVisible = [...visibleTabs].sort((a, b) => a - b);
77
- const lastVisible = sortedVisible[sortedVisible.length - 1];
78
- return {
79
- visible: visibleTabs.map((idx) => (idx === lastVisible ? clickedIndex : idx)),
80
- overflow: overflowTabs.map((idx) => (idx === clickedIndex ? lastVisible : idx)),
81
- };
62
+ const { visible: visibleTabs, overflow: overflowTabs } = tabs;
63
+ // Indexes of visible tabs should be sorted(asc), to replace the last visible tab with the clicked tab
64
+ const newVisibleTabs = [...visibleTabs].sort((a, b) => a - b);
65
+ const newOverflowTabs = [...overflowTabs];
66
+ const clickedIdxInOverflow = newOverflowTabs.indexOf(clickedIndex);
67
+ if (clickedIdxInOverflow !== -1) {
68
+ const lastVisible = newVisibleTabs[newVisibleTabs.length - 1];
69
+ newOverflowTabs.splice(clickedIdxInOverflow, 1);
70
+ newOverflowTabs.unshift(lastVisible);
71
+ newVisibleTabs.splice(newVisibleTabs.length - 1, 1);
72
+ newVisibleTabs.unshift(clickedIndex);
73
+ }
74
+ setTabs({
75
+ visible: newVisibleTabs,
76
+ overflow: newOverflowTabs,
82
77
  });
83
- }, []);
78
+ }, [tabs]);
84
79
  const onTabClick = (0, react_1.useCallback)((labelOrIndex) => {
85
80
  const clickedIndex = typeof labelOrIndex === 'string'
86
81
  ? tabRefs.current.findIndex((ref) => (ref === null || ref === void 0 ? void 0 : ref.getAttribute('data-label')) === labelOrIndex)
87
82
  : labelOrIndex;
88
83
  if (clickedIndex === -1)
89
84
  return;
90
- const label = tabLabelsRef.current[clickedIndex];
91
- if (!label)
92
- return;
93
- // If this is an overflow tab, replace it with a visible one
94
- if (tabs.overflow.includes(clickedIndex)) {
85
+ const hasOverflowTabs = tabs.overflow.length > 0;
86
+ if (hasOverflowTabs && !allTabsHidden && tabs.overflow.includes(clickedIndex)) {
95
87
  replaceLastVisibleTabWithClickedOverflowTab(clickedIndex);
96
88
  }
97
- onTabChange(label);
98
- focusTab(clickedIndex);
99
- }, [tabs.overflow, onTabChange, replaceLastVisibleTabWithClickedOverflowTab, focusTab]);
89
+ const label = tabLabelsRef.current[clickedIndex];
90
+ if (label) {
91
+ onTabChange(label);
92
+ focusTab(clickedIndex);
93
+ }
94
+ }, [allTabsHidden, tabs.overflow, onTabChange, replaceLastVisibleTabWithClickedOverflowTab]);
100
95
  const calculateVisibleTabs = (0, react_1.useCallback)(() => {
101
96
  const container = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current;
102
97
  if (!container)
103
98
  return;
104
99
  const containerWidth = container.offsetWidth;
105
100
  const tabWidths = tabWidthsRef.current;
106
- const tabLabels = tabLabelsRef.current;
107
- // Wait until all tabs are registered before calculating
108
- if (tabWidths.length < totalTabs || tabLabels.length < totalTabs) {
109
- return;
110
- }
111
- // Check if container has proper width (not zero)
112
- if (containerWidth === 0) {
113
- return;
114
- }
115
- // Find active tab index by label in tabLabelsRef, not by DOM element
116
- // because tab might not be rendered if it's in overflow
117
- const activeTabIndex = tabLabels.findIndex((label) => label === activeTabRef.current);
101
+ const activeTabIndex = tabRefs.current.findIndex((ref) => (ref === null || ref === void 0 ? void 0 : ref.getAttribute('data-label')) === activeTab);
102
+ // Active tab should always be visible, so we include it at the beginning of the array
118
103
  let tabsWidth = activeTabIndex !== -1 ? tabWidths[activeTabIndex] : 0;
119
- const visibleTabs = activeTabIndex !== -1 ? [activeTabIndex] : [];
120
- const overflowTabs = [];
104
+ const visible = activeTabIndex !== -1 ? [activeTabIndex] : [];
105
+ const overflow = [];
121
106
  for (let i = 0; i < tabWidths.length; i++) {
122
- if (i === activeTabIndex)
107
+ // Skip active tab, it was added initially
108
+ if (i === activeTabIndex) {
123
109
  continue;
110
+ }
124
111
  const tabWidthWithGap = tabWidths[i] + TABS_GAP;
125
112
  const projectedWidth = tabsWidth + tabWidthWithGap;
126
113
  if (projectedWidth <= containerWidth) {
127
- visibleTabs.push(i);
114
+ visible.push(i);
128
115
  tabsWidth += tabWidthWithGap;
129
116
  }
130
117
  else {
131
- overflowTabs.push(i);
118
+ overflow.push(i);
132
119
  }
133
120
  }
134
- if (overflowTabs.length > 0) {
121
+ if (overflow.length > 0) {
135
122
  tabsWidth += MORE_BUTTON_WIDTH;
136
- while (tabsWidth > containerWidth && visibleTabs.length > 1) {
137
- const removed = visibleTabs.pop();
138
- // Never remove the active tab - it should always stay visible or be the last one
139
- if (removed !== undefined && removed !== activeTabIndex) {
140
- overflowTabs.unshift(removed);
123
+ // Remove tabs starting from the end of the array until the width of the visible tabs is less than the container width
124
+ while (tabsWidth > containerWidth && visible.length) {
125
+ const removed = visible.pop();
126
+ if (removed !== undefined) {
127
+ overflow.unshift(removed);
141
128
  tabsWidth -= tabWidths[removed];
142
129
  }
143
- else if (removed === activeTabIndex) {
144
- // Put it back if we accidentally removed the active tab
145
- visibleTabs.push(removed);
146
- break;
147
- }
148
- }
149
- // If even with only the active tab visible, it doesn't fit with More button,
150
- // move all tabs to overflow (show only dropdown)
151
- if (tabsWidth > containerWidth && visibleTabs.length === 1) {
152
- overflowTabs.unshift(...visibleTabs);
153
- visibleTabs.length = 0;
154
130
  }
155
131
  }
156
132
  setTabs({
157
- visible: visibleTabs,
158
- overflow: overflowTabs,
133
+ visible,
134
+ overflow,
159
135
  });
160
- // Set ready state on first calculation
161
- if (isFirstCalculation.current) {
162
- isFirstCalculation.current = false;
163
- setIsReady(true);
164
- }
165
- }, [containerRef, totalTabs]);
166
- // Store calculateVisibleTabs in ref for use in setTabRef
167
- calculateVisibleTabsRef.current = calculateVisibleTabs;
168
- // Reset isFirstCalculation when totalTabs changes (new page/tabs)
136
+ }, [containerRef, activeTab]);
169
137
  (0, react_1.useEffect)(() => {
170
- isFirstCalculation.current = true;
171
- setIsReady(false);
172
- // Clear refs so we wait for new tabs to register
173
- tabWidthsRef.current = [];
174
- tabLabelsRef.current = [];
175
- }, [totalTabs]);
176
- // Call calculateVisibleTabs on first render and resize
177
- (0, react_1.useEffect)(() => {
178
- const container = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current;
179
- if (!container)
138
+ if (!(containerRef === null || containerRef === void 0 ? void 0 : containerRef.current))
180
139
  return;
181
- let resizeTimeout = null;
182
- // Use ResizeObserver to wait until container has proper size
183
- const resizeObserver = new ResizeObserver(() => {
184
- if (resizeTimeout)
185
- cancelAnimationFrame(resizeTimeout);
186
- resizeTimeout = requestAnimationFrame(calculateVisibleTabs);
187
- });
188
- resizeObserver.observe(container);
140
+ let resizeTimeout = requestAnimationFrame(calculateVisibleTabs);
189
141
  const handleResize = () => {
190
- if (resizeTimeout)
142
+ if (resizeTimeout) {
191
143
  cancelAnimationFrame(resizeTimeout);
144
+ }
192
145
  resizeTimeout = requestAnimationFrame(calculateVisibleTabs);
193
146
  };
194
147
  window.addEventListener('resize', handleResize);
195
148
  return () => {
196
- resizeObserver.disconnect();
197
149
  window.removeEventListener('resize', handleResize);
198
- if (resizeTimeout)
199
- cancelAnimationFrame(resizeTimeout);
150
+ cancelAnimationFrame(resizeTimeout);
200
151
  };
201
152
  }, [containerRef, totalTabs, calculateVisibleTabs]);
202
- // Recalculate when activeTab changes to ensure it's visible
203
- (0, react_1.useEffect)(() => {
204
- if (!(containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) || isFirstCalculation.current)
205
- return;
206
- requestAnimationFrame(calculateVisibleTabs);
207
- }, [activeTab, containerRef, calculateVisibleTabs]);
208
153
  return {
209
154
  setTabRef,
210
155
  onTabClick,
211
156
  handleKeyboard,
212
157
  visibleTabs: tabs.visible,
213
158
  overflowTabs: tabs.overflow,
214
- isReady,
159
+ allTabsHidden,
215
160
  };
216
161
  }
217
162
  const useActiveTab = ({ initialTab, tabsId }) => {
218
163
  const [searchParams, setSearchParams] = (0, react_router_dom_1.useSearchParams)();
219
- const initialTabValue = (0, react_1.useMemo)(() => getInitialTab({ initialTab, searchParams, tabsId }),
220
- // eslint-disable-next-line react-hooks/exhaustive-deps
221
- []);
222
- const [activeTab, setActiveTab] = (0, react_1.useState)(initialTabValue);
164
+ const [activeTab, setActiveTab] = (0, react_1.useState)(getInitialTab({ initialTab, searchParams, tabsId }));
223
165
  const prevActiveTabRef = (0, react_1.useRef)(activeTab);
224
166
  (0, react_1.useEffect)(() => {
225
167
  const hasActiveTabChanged = prevActiveTabRef.current !== activeTab;
@@ -232,10 +174,10 @@ const useActiveTab = ({ initialTab, tabsId }) => {
232
174
  return searchParams;
233
175
  });
234
176
  }, [activeTab, setSearchParams, tabsId]);
235
- return (0, react_1.useMemo)(() => ({
177
+ return {
236
178
  activeTab,
237
179
  setActiveTab,
238
- }), [activeTab]);
180
+ };
239
181
  };
240
182
  exports.useActiveTab = useActiveTab;
241
183
  const getInitialTab = ({ initialTab, searchParams, tabsId }) => {
@@ -36,7 +36,6 @@ export declare const useTelemetryFallback: () => {
36
36
  sendLanguagePickerLocaleChangedMessage: () => void;
37
37
  sendSearchOpenedMessage: () => void;
38
38
  sendSearchQueryMessage: () => void;
39
- sendSearchAiOpenedMessage: () => void;
40
39
  sendSearchAIQueryMessage: () => void;
41
40
  sendFeedbackMessage: () => void;
42
41
  sendSearchResultClickedMessage: () => void;
@@ -40,7 +40,6 @@ const useTelemetryFallback = () => ({
40
40
  sendLanguagePickerLocaleChangedMessage: () => { },
41
41
  sendSearchOpenedMessage: () => { },
42
42
  sendSearchQueryMessage: () => { },
43
- sendSearchAiOpenedMessage: () => { },
44
43
  sendSearchAIQueryMessage: () => { },
45
44
  sendFeedbackMessage: () => { },
46
45
  sendSearchResultClickedMessage: () => { },
@@ -60,7 +60,7 @@ export type ThemeHooks = {
60
60
  breadcrumbs: BreadcrumbItem[];
61
61
  currentItemSiblings?: BreadcrumbItem[];
62
62
  };
63
- useSearch: (product?: string, autoSearchDisabled?: boolean, searchSessionId?: string) => {
63
+ useSearch: (product?: string, autoSearchDisabled?: boolean) => {
64
64
  query: string;
65
65
  setQuery: React.Dispatch<React.SetStateAction<string>>;
66
66
  filter: SearchFilterItem[];
@@ -78,7 +78,7 @@ export type ThemeHooks = {
78
78
  };
79
79
  useAiSearch: (options?: {
80
80
  filter?: SearchFilterItem[];
81
- }, searchSessionId?: string) => {
81
+ }) => {
82
82
  askQuestion: (question: string, history?: AiSearchConversationItem[]) => void;
83
83
  isGeneratingResponse: boolean;
84
84
  question: string;
@@ -0,0 +1,5 @@
1
+ import type { CatalogItem } from '../index.js';
2
+ export declare function useProcessScorecard(): {
3
+ processScorecard: <T = any>(scorecard: T, api: CatalogItem) => T;
4
+ processInfo: <T>(info: T) => T;
5
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useProcessScorecard = useProcessScorecard;
4
+ const react_1 = require("react");
5
+ function useProcessScorecard() {
6
+ return {
7
+ processScorecard: (0, react_1.useCallback)((scorecard) => scorecard, []),
8
+ processInfo: (0, react_1.useCallback)((info) => info, []),
9
+ };
10
+ }
11
+ //# sourceMappingURL=process-scorecard.js.map
@@ -30,27 +30,18 @@ exports.AiStarsIcon = (0, styled_components_1.default)(Icon).attrs(() => ({
30
30
  height: ${({ size }) => size || '16px'};
31
31
  width: ${({ size }) => size || '16px'};
32
32
 
33
- ${({ background, borderRadius, margin, padding, size }) => background &&
33
+ ${({ background, borderRadius, margin }) => background &&
34
34
  `
35
35
  display: flex;
36
36
  align-items: center;
37
37
  justify-content: center;
38
- flex-shrink: 0;
39
38
 
40
39
  background: ${(0, utils_1.getCssColorVariable)(background)};
41
- width: ${size || '16px'};
42
- height: ${size || '16px'};
43
40
 
44
- padding: ${padding || 'var(--spacing-xs)'};
41
+ padding: var(--spacing-xs);
45
42
  margin: ${margin || '0'};
46
43
 
47
44
  border-radius: ${background && borderRadius ? borderRadius : 'none'};
48
-
49
- svg {
50
- width: calc(${size || '16px'} - 2 * (${padding || 'var(--spacing-xs)'}));
51
- height: calc(${size || '16px'} - 2 * (${padding || 'var(--spacing-xs)'}));
52
- flex-shrink: 0;
53
- }
54
45
  `}
55
46
 
56
47
  color: ${({ color }) => color && (0, utils_1.getCssColorVariable)(color)};
@@ -7,10 +7,13 @@ exports.RedoclyIcon = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const styled_components_1 = __importDefault(require("styled-components"));
9
9
  const utils_1 = require("../../core/utils");
10
- const Icon = (props) => (react_1.default.createElement("svg", Object.assign({ viewBox: "0 0 18 18", xmlns: "http://www.w3.org/2000/svg" }, props),
11
- react_1.default.createElement("g", null,
12
- react_1.default.createElement("path", { d: "M14.625 6.19973C14.625 8.69176 12.6173 10.712 10.1406 10.712H2.8125V10.2717C5.04753 10.2717 6.85938 8.44864 6.85938 6.19973C6.85938 3.95082 5.04753 2.12772 2.8125 2.12772V1.6875H10.1406C12.6173 1.6875 14.625 3.70769 14.625 6.19973Z" }),
13
- react_1.default.createElement("path", { d: "M14.625 16.875C14.625 14.383 12.6173 12.3628 10.1406 12.3628H2.8125V12.803C5.04753 12.803 6.85938 14.6261 6.85938 16.875H14.625Z" }))));
10
+ const Icon = (props) => (react_1.default.createElement("svg", Object.assign({ width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props),
11
+ react_1.default.createElement("g", { clipPath: "url(#clip0_4053_1165)" },
12
+ react_1.default.createElement("path", { d: "M14.625 6.19973C14.625 8.69176 12.6173 10.712 10.1406 10.712H2.8125V10.2717C5.04753 10.2717 6.85938 8.44864 6.85938 6.19973C6.85938 3.95082 5.04753 2.12772 2.8125 2.12772V1.6875H10.1406C12.6173 1.6875 14.625 3.70769 14.625 6.19973Z", fill: "#2467F2" }),
13
+ react_1.default.createElement("path", { d: "M14.625 16.875C14.625 14.383 12.6173 12.3628 10.1406 12.3628H2.8125V12.803C5.04753 12.803 6.85938 14.6261 6.85938 16.875H14.625Z", fill: "#2467F2" })),
14
+ react_1.default.createElement("defs", null,
15
+ react_1.default.createElement("clipPath", { id: "clip0_4053_1165" },
16
+ react_1.default.createElement("rect", { width: "18", height: "18", fill: "white" })))));
14
17
  exports.RedoclyIcon = (0, styled_components_1.default)(Icon).attrs(() => ({
15
18
  'data-component-name': 'icons/RedoclyIcon/RedoclyIcon',
16
19
  })) `
package/lib/index.d.ts CHANGED
@@ -78,9 +78,11 @@ export * from './components/UserMenu/UserMenuMobile';
78
78
  export * from './components/Sidebar/Sidebar';
79
79
  export * from './components/OpenApiDocs/hooks/AfterOpenApiOperation';
80
80
  export * from './components/OpenApiDocs/hooks/AfterOpenApiTitle';
81
+ export * from './components/OpenApiDocs/hooks/AfterOpenApiDescription';
81
82
  export * from './components/OpenApiDocs/hooks/BeforeOpenApiOperation';
82
83
  export * from './components/OpenApiDocs/hooks/OpenApiFooter';
83
84
  export * from './components/OpenApiDocs/hooks/OpenApiHeader';
85
+ export * from './components/OpenApiDocs/hooks/AdditionalOverviewInfo';
84
86
  export * from './components/SidebarActions/ChangeViewButton';
85
87
  export * from './components/SidebarActions/SidebarActions';
86
88
  export * from './components/SidebarActions/styled';
package/lib/index.js CHANGED
@@ -131,9 +131,11 @@ __exportStar(require("./components/Sidebar/Sidebar"), exports);
131
131
  /* OpenApiDocs */
132
132
  __exportStar(require("./components/OpenApiDocs/hooks/AfterOpenApiOperation"), exports);
133
133
  __exportStar(require("./components/OpenApiDocs/hooks/AfterOpenApiTitle"), exports);
134
+ __exportStar(require("./components/OpenApiDocs/hooks/AfterOpenApiDescription"), exports);
134
135
  __exportStar(require("./components/OpenApiDocs/hooks/BeforeOpenApiOperation"), exports);
135
136
  __exportStar(require("./components/OpenApiDocs/hooks/OpenApiFooter"), exports);
136
137
  __exportStar(require("./components/OpenApiDocs/hooks/OpenApiHeader"), exports);
138
+ __exportStar(require("./components/OpenApiDocs/hooks/AdditionalOverviewInfo"), exports);
137
139
  /* SidebarActions */
138
140
  __exportStar(require("./components/SidebarActions/ChangeViewButton"), exports);
139
141
  __exportStar(require("./components/SidebarActions/SidebarActions"), exports);
@@ -6,10 +6,8 @@ type TabListProps = {
6
6
  size: TabsSize;
7
7
  activeTab: string;
8
8
  onTabChange: (tab: string) => void;
9
- containerRef: React.RefObject<HTMLUListElement | null>;
10
- onReadyChange?: (isReady: boolean) => void;
11
9
  };
12
- export declare function TabList({ childrenArray, size, activeTab, onTabChange, containerRef, onReadyChange, }: TabListProps): JSX.Element;
10
+ export declare function TabList({ childrenArray, size, activeTab, onTabChange, }: TabListProps): JSX.Element;
13
11
  export declare const TabListContainer: import("styled-components").StyledComponent<"ul", any, {}, never>;
14
12
  export declare const TabItem: import("styled-components").StyledComponent<"li", any, {
15
13
  active?: boolean;