@redocly/theme 0.69.0-next.9 → 0.70.0-next.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 (226) hide show
  1. package/lib/components/Buttons/DownloadButton.js +13 -3
  2. package/lib/components/Catalog/Catalog.d.ts +2 -2
  3. package/lib/components/Catalog/CatalogActionsRow.d.ts +3 -2
  4. package/lib/components/Catalog/CatalogCardView/CatalogCard.d.ts +2 -2
  5. package/lib/components/Catalog/CatalogEntities.d.ts +2 -2
  6. package/lib/components/Catalog/CatalogEntities.js +1 -0
  7. package/lib/components/Catalog/CatalogEntitiesEmptyState.d.ts +1 -1
  8. package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsGraph.d.ts +2 -2
  9. package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsGraph.js +1 -2
  10. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton.d.ts +3 -1
  11. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton.js +45 -23
  12. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistorySidebar.js +67 -33
  13. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityRevisionItem.d.ts +3 -1
  14. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityRevisionItem.js +15 -3
  15. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem.d.ts +3 -1
  16. package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem.js +48 -57
  17. package/lib/components/Catalog/CatalogEntity/CatalogEntityInfoBar.d.ts +1 -1
  18. package/lib/components/Catalog/CatalogEntity/CatalogEntityLinks.d.ts +1 -1
  19. package/lib/components/Catalog/CatalogEntity/CatalogEntityMetadata.d.ts +1 -1
  20. package/lib/components/Catalog/CatalogEntity/CatalogEntityMethodAndPath.d.ts +1 -1
  21. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties.d.ts +2 -2
  22. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityPropertyCard.d.ts +1 -1
  23. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/ContactProperty.d.ts +2 -2
  24. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/DomainsProperty.d.ts +2 -2
  25. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/EntityTypeProperty.d.ts +2 -2
  26. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/FormatProperty.d.ts +2 -2
  27. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/GitProperty.d.ts +2 -2
  28. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.d.ts +2 -2
  29. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.js +1 -2
  30. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/TagsProperty.d.ts +2 -2
  31. package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/UserEmailProperty.d.ts +2 -2
  32. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations.d.ts +1 -1
  33. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityDefaultRelations.d.ts +2 -3
  34. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelations.d.ts +1 -1
  35. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.d.ts +3 -4
  36. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTableContent.d.ts +3 -4
  37. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.d.ts +1 -1
  38. package/lib/components/Catalog/CatalogEntity/CatalogEntitySchema.js +1 -2
  39. package/lib/components/Catalog/CatalogEntityIcon.d.ts +1 -1
  40. package/lib/components/Catalog/CatalogEntityTypeTag.d.ts +2 -2
  41. package/lib/components/Catalog/CatalogFilter/CatalogFilterContent.d.ts +1 -1
  42. package/lib/components/Catalog/CatalogFilter/CatalogFilterContent.js +1 -2
  43. package/lib/components/Catalog/CatalogHighlight.d.ts +2 -1
  44. package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanel.d.ts +2 -1
  45. package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelHeader.d.ts +1 -1
  46. package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelOverlay.d.ts +2 -1
  47. package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBar.d.ts +2 -2
  48. package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarControls.d.ts +2 -2
  49. package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarFiltersButton.d.ts +1 -1
  50. package/lib/components/Catalog/CatalogSelector.d.ts +3 -2
  51. package/lib/components/Catalog/CatalogTableView/CatalogEntityCell.d.ts +1 -1
  52. package/lib/components/Catalog/CatalogTableView/CatalogTableHeaderCell.d.ts +1 -1
  53. package/lib/components/Catalog/CatalogTableView/CatalogTableView.d.ts +2 -1
  54. package/lib/components/Catalog/CatalogTableView/CatalogTableViewRow.d.ts +2 -1
  55. package/lib/components/Catalog/CatalogTableView/CatalogTagsCell.d.ts +1 -1
  56. package/lib/components/Catalog/CatalogTags.d.ts +2 -2
  57. package/lib/components/Catalog/CatalogViewModeToggle.d.ts +1 -1
  58. package/lib/components/Catalog/variables.js +24 -33
  59. package/lib/components/CatalogClassic/CatalogClassicInfoBlock.d.ts +1 -1
  60. package/lib/components/CatalogClassic/CatalogClassicInfoBlock.js +1 -2
  61. package/lib/components/CatalogClassic/CatalogClassicVirtualizedGroups.d.ts +1 -1
  62. package/lib/components/CodeBlock/CodeBlockControls.d.ts +1 -1
  63. package/lib/components/Dropdown/Dropdown.js +7 -1
  64. package/lib/components/Filter/FilterOptionLabel.d.ts +1 -1
  65. package/lib/components/LoadMore/LoadMore.d.ts +1 -1
  66. package/lib/components/MCP/McpConnectionTabs.js +22 -12
  67. package/lib/components/Markdown/Markdown.js +1 -3
  68. package/lib/components/Markdown/styles/base-table.js +8 -0
  69. package/lib/components/Markdown/variables.js +1 -2
  70. package/lib/components/PageActions/PageActions.d.ts +1 -1
  71. package/lib/components/Search/SearchAiDialog.d.ts +1 -1
  72. package/lib/components/Search/SearchAiDialog.js +3 -0
  73. package/lib/components/Search/SearchAiMessage.d.ts +1 -2
  74. package/lib/components/Search/SearchAiMessage.js +8 -10
  75. package/lib/components/Search/SearchAiResponse.d.ts +1 -1
  76. package/lib/components/Search/SearchGroups.d.ts +1 -1
  77. package/lib/core/constants/markdown.d.ts +2 -0
  78. package/lib/core/constants/markdown.js +3 -1
  79. package/lib/core/contexts/AccordionGroupContext.d.ts +1 -0
  80. package/lib/core/contexts/AccordionGroupContext.js +6 -0
  81. package/lib/core/contexts/PageActionsContext.d.ts +5 -0
  82. package/lib/core/contexts/PageActionsContext.js +10 -0
  83. package/lib/core/contexts/index.d.ts +2 -0
  84. package/lib/core/contexts/index.js +2 -0
  85. package/lib/core/hooks/catalog/use-catalog-entity-schema.d.ts +1 -1
  86. package/lib/core/hooks/catalog/use-catalog-table-header-cell-actions.d.ts +1 -1
  87. package/lib/core/hooks/catalog/use-graph.d.ts +3 -3
  88. package/lib/core/hooks/code-walkthrough/use-code-walkthrough-steps.js +1 -0
  89. package/lib/core/hooks/use-active-heading.js +4 -0
  90. package/lib/core/hooks/use-active-section-id.js +6 -0
  91. package/lib/core/hooks/use-connect-mcp-button.js +7 -2
  92. package/lib/core/hooks/use-element-size.d.ts +1 -1
  93. package/lib/core/hooks/use-product-picker.js +1 -1
  94. package/lib/core/hooks/use-tabs.js +4 -2
  95. package/lib/core/hooks/use-telemetry-fallback.d.ts +2 -0
  96. package/lib/core/hooks/use-telemetry-fallback.js +2 -0
  97. package/lib/core/styles/global.js +1 -0
  98. package/lib/core/types/catalog.d.ts +2 -3
  99. package/lib/core/types/common.d.ts +1 -1
  100. package/lib/core/types/hooks.d.ts +4 -7
  101. package/lib/core/utils/class-names.d.ts +1 -0
  102. package/lib/core/utils/class-names.js +7 -0
  103. package/lib/core/utils/mcp.d.ts +0 -1
  104. package/lib/core/utils/mcp.js +0 -13
  105. package/lib/core/utils/menu.d.ts +2 -2
  106. package/lib/core/utils/urls.js +1 -3
  107. package/lib/ext/use-configure-replay.d.ts +1 -1
  108. package/lib/layouts/OIDCForbidden.js +1 -1
  109. package/lib/markdoc/components/Accordion/Accordion.js +6 -6
  110. package/lib/markdoc/components/Accordion/AccordionGroup.d.ts +2 -1
  111. package/lib/markdoc/components/Accordion/AccordionGroup.js +39 -3
  112. package/lib/markdoc/components/CodeWalkthrough/CodePanelPreview.d.ts +1 -2
  113. package/lib/markdoc/components/Diagram/Diagram.d.ts +1 -1
  114. package/lib/markdoc/components/Diagram/Diagram.js +1 -2
  115. package/lib/markdoc/components/Heading/Heading.js +5 -2
  116. package/lib/markdoc/components/Tabs/Tab.d.ts +1 -1
  117. package/lib/markdoc/components/Tabs/TabList.d.ts +1 -1
  118. package/lib/markdoc/tags/accordion-group.js +3 -0
  119. package/lib/markdoc/tags/code-walkthrough.d.ts +1 -1
  120. package/lib/markdoc/tags/markdoc-example.js +34 -22
  121. package/package.json +2 -2
  122. package/src/components/Buttons/DownloadButton.tsx +16 -8
  123. package/src/components/Catalog/Catalog.tsx +4 -4
  124. package/src/components/Catalog/CatalogActionsRow.tsx +3 -2
  125. package/src/components/Catalog/CatalogCardView/CatalogCard.tsx +3 -2
  126. package/src/components/Catalog/CatalogEntities.tsx +4 -2
  127. package/src/components/Catalog/CatalogEntitiesEmptyState.tsx +2 -1
  128. package/src/components/Catalog/CatalogEntity/CatalogEntity.tsx +6 -2
  129. package/src/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsGraph.tsx +4 -5
  130. package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton.tsx +56 -35
  131. package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistorySidebar.tsx +80 -42
  132. package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityRevisionItem.tsx +18 -2
  133. package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem.tsx +61 -75
  134. package/src/components/Catalog/CatalogEntity/CatalogEntityInfoBar.tsx +2 -1
  135. package/src/components/Catalog/CatalogEntity/CatalogEntityLinks.tsx +1 -1
  136. package/src/components/Catalog/CatalogEntity/CatalogEntityMetadata.tsx +1 -1
  137. package/src/components/Catalog/CatalogEntity/CatalogEntityMethodAndPath.tsx +1 -1
  138. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties.tsx +3 -2
  139. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityPropertyCard.tsx +2 -1
  140. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/ContactProperty.tsx +3 -2
  141. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/DomainsProperty.tsx +3 -2
  142. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/EntityTypeProperty.tsx +3 -2
  143. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/FormatProperty.tsx +3 -2
  144. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/GitProperty.tsx +3 -2
  145. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.tsx +3 -4
  146. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/TagsProperty.tsx +3 -2
  147. package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/UserEmailProperty.tsx +3 -2
  148. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations.tsx +2 -1
  149. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityDefaultRelations.tsx +7 -4
  150. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelations.tsx +2 -1
  151. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.tsx +7 -4
  152. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTableContent.tsx +3 -4
  153. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.tsx +3 -2
  154. package/src/components/Catalog/CatalogEntity/CatalogEntitySchema.tsx +1 -2
  155. package/src/components/Catalog/CatalogEntityIcon.tsx +3 -2
  156. package/src/components/Catalog/CatalogEntityTypeTag.tsx +3 -2
  157. package/src/components/Catalog/CatalogFilter/CatalogFilterContent.tsx +2 -4
  158. package/src/components/Catalog/CatalogHighlight.tsx +2 -1
  159. package/src/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanel.tsx +2 -1
  160. package/src/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelHeader.tsx +2 -1
  161. package/src/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelOverlay.tsx +2 -1
  162. package/src/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBar.tsx +3 -2
  163. package/src/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarControls.tsx +3 -2
  164. package/src/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarFiltersButton.tsx +2 -1
  165. package/src/components/Catalog/CatalogSelector.tsx +3 -2
  166. package/src/components/Catalog/CatalogTableView/CatalogEntityCell.tsx +1 -1
  167. package/src/components/Catalog/CatalogTableView/CatalogTableHeaderCell.tsx +1 -1
  168. package/src/components/Catalog/CatalogTableView/CatalogTableView.tsx +2 -1
  169. package/src/components/Catalog/CatalogTableView/CatalogTableViewRow.tsx +2 -1
  170. package/src/components/Catalog/CatalogTableView/CatalogTagsCell.tsx +1 -1
  171. package/src/components/Catalog/CatalogTags.tsx +4 -2
  172. package/src/components/Catalog/CatalogViewModeToggle.tsx +1 -1
  173. package/src/components/Catalog/variables.ts +24 -33
  174. package/src/components/CatalogClassic/CatalogClassicInfoBlock.tsx +2 -5
  175. package/src/components/CatalogClassic/CatalogClassicVirtualizedGroups.tsx +1 -1
  176. package/src/components/CodeBlock/CodeBlockControls.tsx +2 -1
  177. package/src/components/Dropdown/Dropdown.tsx +5 -1
  178. package/src/components/Filter/FilterOptionLabel.tsx +1 -1
  179. package/src/components/LoadMore/LoadMore.tsx +2 -1
  180. package/src/components/MCP/McpConnectionTabs.tsx +35 -14
  181. package/src/components/Markdown/Markdown.tsx +1 -3
  182. package/src/components/Markdown/styles/base-table.ts +8 -0
  183. package/src/components/Markdown/variables.ts +1 -2
  184. package/src/components/PageActions/PageActions.tsx +2 -1
  185. package/src/components/Search/SearchAiDialog.tsx +4 -1
  186. package/src/components/Search/SearchAiMessage.tsx +3 -6
  187. package/src/components/Search/SearchAiResponse.tsx +2 -4
  188. package/src/components/Search/SearchGroups.tsx +1 -5
  189. package/src/core/constants/markdown.ts +4 -0
  190. package/src/core/contexts/AccordionGroupContext.tsx +3 -0
  191. package/src/core/contexts/PageActionsContext.tsx +7 -0
  192. package/src/core/contexts/index.ts +2 -0
  193. package/src/core/hooks/__mocks__/use-theme-hooks.ts +2 -0
  194. package/src/core/hooks/catalog/use-catalog-entity-schema.ts +1 -1
  195. package/src/core/hooks/catalog/use-catalog-table-header-cell-actions.ts +1 -1
  196. package/src/core/hooks/catalog/use-graph.ts +4 -4
  197. package/src/core/hooks/code-walkthrough/use-code-walkthrough-steps.ts +1 -0
  198. package/src/core/hooks/menu/__mocks__/use-mobile-menu-items.ts +1 -1
  199. package/src/core/hooks/use-active-heading.ts +4 -0
  200. package/src/core/hooks/use-active-section-id.ts +8 -0
  201. package/src/core/hooks/use-connect-mcp-button.ts +8 -2
  202. package/src/core/hooks/use-element-size.ts +2 -1
  203. package/src/core/hooks/use-product-picker.ts +2 -2
  204. package/src/core/hooks/use-tabs.ts +4 -2
  205. package/src/core/hooks/use-telemetry-fallback.ts +2 -0
  206. package/src/core/styles/global.ts +1 -0
  207. package/src/core/types/catalog.ts +7 -3
  208. package/src/core/types/common.ts +1 -1
  209. package/src/core/types/hooks.ts +15 -13
  210. package/src/core/utils/class-names.ts +8 -0
  211. package/src/core/utils/mcp.ts +0 -17
  212. package/src/core/utils/menu.ts +2 -2
  213. package/src/core/utils/urls.ts +1 -3
  214. package/src/ext/use-configure-replay.ts +3 -3
  215. package/src/layouts/OIDCForbidden.tsx +1 -1
  216. package/src/markdoc/components/Accordion/Accordion.tsx +8 -2
  217. package/src/markdoc/components/Accordion/AccordionGroup.tsx +9 -2
  218. package/src/markdoc/components/CodeWalkthrough/CodePanelPreview.tsx +2 -2
  219. package/src/markdoc/components/CodeWalkthrough/CodeWalkthrough.tsx +2 -4
  220. package/src/markdoc/components/Diagram/Diagram.tsx +2 -5
  221. package/src/markdoc/components/Heading/Heading.tsx +7 -4
  222. package/src/markdoc/components/Tabs/Tab.tsx +1 -1
  223. package/src/markdoc/components/Tabs/TabList.tsx +1 -1
  224. package/src/markdoc/tags/accordion-group.ts +3 -0
  225. package/src/markdoc/tags/code-walkthrough.ts +2 -1
  226. package/src/markdoc/tags/markdoc-example.ts +45 -28
@@ -473,33 +473,31 @@ exports.catalog = (0, styled_components_1.css) `
473
473
  * @tokens Catalog history button
474
474
  */
475
475
  --catalog-history-button-width: 252px;
476
- --catalog-history-button-item-width: 244px;
477
476
  --catalog-history-separator-border-color: var(--border-color-secondary);
478
- --catalog-history-separator-margin-bottom: var(--spacing-sm);
477
+ --catalog-history-separator-margin: var(--spacing-sm) 0;
479
478
  --catalog-history-item-padding: var(--spacing-xxs);
480
- --catalog-history-item-margin-bottom: calc(var(--spacing-xxs) * -1);
481
- --catalog-history-item-gap: var(--spacing-xs);
482
- --catalog-history-item-border-radius: var(--menu-item-label-border-radius);
479
+ --catalog-history-item-gap: var(--spacing-xxs);
480
+ --catalog-history-item-border-radius: var(--border-radius-lg);
483
481
  --catalog-history-item-bg-color-hover: var(--menu-item-bg-color-hover);
484
482
  --catalog-history-icon-size: 16px;
485
- --catalog-history-content-max-width: 212px;
483
+ --catalog-history-icon-gap: 2px;
486
484
  --catalog-history-text-font-family: var(--font-family-base);
487
485
  --catalog-history-text-font-size: var(--font-size-base);
488
486
  --catalog-history-text-font-weight: var(--font-weight-regular);
489
487
  --catalog-history-text-line-height: var(--line-height-base);
490
- --catalog-history-text-color: var(--text-color-primary);
488
+ --catalog-history-text-color: var(--menu-content-color);
491
489
  --catalog-history-pill-gap: var(--spacing-xxs);
490
+ --catalog-history-pill-height: 22px;
492
491
  --catalog-history-pill-padding-vertical: 1px;
493
492
  --catalog-history-pill-padding-horizontal: var(--spacing-xs);
494
493
  --catalog-history-pill-border-color: var(--border-color-primary);
495
- --catalog-history-pill-border-radius: 12px;
496
- --catalog-history-pill-icon-size: 16px;
494
+ --catalog-history-pill-border-radius: var(--border-radius-xl);
495
+ --catalog-history-pill-icon-size: 14px;
497
496
  --catalog-history-pill-icon-color: var(--color-green-8);
498
497
  --catalog-history-pill-font-family: var(--font-family-base);
499
498
  --catalog-history-pill-font-size: var(--font-size-base);
500
499
  --catalog-history-pill-line-height: var(--line-height-base);
501
500
  --catalog-history-pill-text-color: var(--text-color-primary);
502
- --catalog-history-pill-min-width: calc(100% - 118px - var(--catalog-history-item-gap));
503
501
  // @tokens End
504
502
 
505
503
  /**
@@ -508,50 +506,44 @@ exports.catalog = (0, styled_components_1.css) `
508
506
  --catalog-history-sidebar-width: 320px;
509
507
  --catalog-history-sidebar-bg-color: var(--sidebar-bg-color);
510
508
  --catalog-history-sidebar-border-color: var(--border-color-secondary);
509
+ --catalog-history-sidebar-padding: var(--spacing-base) var(--spacing-base) 0;
510
+ --catalog-history-sidebar-divider-margin: var(--spacing-sm) 0 0;
511
511
 
512
- --catalog-history-sidebar-header-padding: var(--spacing-base) var(--spacing-sm) var(--spacing-base);
512
+ --catalog-history-sidebar-header-padding: var(--spacing-xxs);
513
513
  --catalog-history-sidebar-header-font-family: var(--font-family-base);
514
514
  --catalog-history-sidebar-header-font-size: var(--font-size-base);
515
515
  --catalog-history-sidebar-header-font-weight: var(--font-weight-regular);
516
516
  --catalog-history-sidebar-header-line-height: var(--line-height-base);
517
517
  --catalog-history-sidebar-header-letter-spacing: 0;
518
- --catalog-history-sidebar-header-color: var(--text-color-primary);
518
+ --catalog-history-sidebar-header-color: var(--menu-content-color);
519
519
 
520
- --catalog-history-sidebar-close-button-size: 32px;
521
- --catalog-history-sidebar-close-button-border-radius: var(--border-radius-md);
520
+ --catalog-history-sidebar-close-button-size: 22px;
521
+ --catalog-history-sidebar-close-button-border-radius: var(--border-radius-xl);
522
522
  --catalog-history-sidebar-close-button-bg-color-hover: var(--color-hover-base);
523
523
  --catalog-history-sidebar-close-icon-color: var(--text-color-primary);
524
524
 
525
- --catalog-history-sidebar-content-padding: 0 var(--spacing-sm);
526
- --catalog-history-sidebar-content-margin-top: calc(var(--spacing-xxs) * -1);
527
-
528
- --catalog-history-sidebar-version-header-padding: var(--spacing-xs) var(--spacing-xxs);
525
+ --catalog-history-sidebar-version-header-padding: var(--spacing-xxs);
529
526
  --catalog-history-sidebar-version-header-border-radius: var(--border-radius-md);
530
527
  --catalog-history-sidebar-version-header-bg-color-hover: var(--color-hover-base);
528
+ --catalog-history-sidebar-version-header-bg-color-current: var(--menu-item-bg-color-active);
531
529
 
532
- --catalog-history-sidebar-version-icon-size: 32px;
533
- --catalog-history-sidebar-version-icon-color: var(--text-color-secondary);
530
+ --catalog-history-sidebar-version-icon-size: 20px;
531
+ --catalog-history-sidebar-version-icon-color: var(--text-color-primary);
534
532
  --catalog-history-sidebar-version-icon-color-current: var(--color-static-white);
535
- --catalog-history-sidebar-version-icon-margin-right: var(--spacing-xs);
533
+ --catalog-history-sidebar-version-icon-margin-right: var(--spacing-xxs);
536
534
  --catalog-history-sidebar-chevron-icon-color: var(--text-color-secondary);
537
- --catalog-history-sidebar-version-info-gap: 2px;
538
535
 
539
536
  --catalog-history-sidebar-version-title-font-family: var(--font-family-base);
540
537
  --catalog-history-sidebar-version-title-font-size: var(--font-size-base);
541
- --catalog-history-sidebar-version-title-font-weight: var(--font-weight-medium);
538
+ --catalog-history-sidebar-version-title-font-weight: var(--font-weight-regular);
542
539
  --catalog-history-sidebar-version-title-line-height: var(--line-height-base);
543
- --catalog-history-sidebar-version-title-color: var(--color-warm-grey-7);
544
-
545
- --catalog-history-sidebar-version-date-font-family: var(--font-family-base);
546
- --catalog-history-sidebar-version-date-font-size: var(--font-size-sm);
547
- --catalog-history-sidebar-version-date-font-weight: var(--font-weight-regular);
548
- --catalog-history-sidebar-version-date-line-height: var(--line-height-sm);
549
- --catalog-history-sidebar-version-date-color: var(--color-warm-grey-7);
540
+ --catalog-history-sidebar-version-title-color: var(--menu-content-color);
550
541
 
551
- --catalog-history-sidebar-revisions-padding-left: 40px;
542
+ --catalog-history-sidebar-revisions-padding-left: 28px;
552
543
  --catalog-history-sidebar-revisions-padding-bottom: var(--spacing-base);
544
+ --catalog-history-sidebar-revision-line-left: 14px;
553
545
 
554
- --catalog-history-sidebar-revision-item-padding: var(--spacing-xs) var(--spacing-sm);
546
+ --catalog-history-sidebar-revision-item-padding: var(--spacing-xxs) var(--spacing-sm);
555
547
  --catalog-history-sidebar-revision-item-border-radius: var(--border-radius-md);
556
548
  --catalog-history-sidebar-revision-item-bg-color-hover: var(--bg-color-hover);
557
549
 
@@ -575,7 +567,6 @@ exports.catalog = (0, styled_components_1.css) `
575
567
  /**
576
568
  * @tokens Catalog history tag border radius
577
569
  */
578
- --catalog-history-sidebar-version-tag-border-radius: var(--border-radius-xl);
579
570
  --catalog-history-sidebar-revision-tag-border-radius: var(--border-radius-xl);
580
571
  // @tokens End
581
572
 
@@ -1,4 +1,4 @@
1
- import type { JSX } from 'react';
1
+ import { type JSX } from 'react';
2
2
  export type CatalogClassicInfoBlockProps = {
3
3
  metadata?: {
4
4
  scorecardLevel?: string;
@@ -10,7 +10,6 @@ const hooks_1 = require("../../core/hooks");
10
10
  const utils_1 = require("../../core/utils");
11
11
  const Tag_1 = require("../../components/Tag/Tag");
12
12
  const Link_1 = require("../../components/Link/Link");
13
- const utils_2 = require("../../core/utils");
14
13
  function CatalogClassicInfoBlock(props) {
15
14
  var _a, _b, _c, _d;
16
15
  const scorecardBadge = ((_a = props.metadata) === null || _a === void 0 ? void 0 : _a.scorecardLevel) ? (react_1.default.createElement(ScorecardBadge, { level: props.metadata.scorecardLevel, slug: (_b = props.metadata) === null || _b === void 0 ? void 0 : _b.scoreCardSlug, colorVariable: (0, utils_1.getScorecardColorVariable)(((_c = props.metadata) === null || _c === void 0 ? void 0 : _c.scorecardLevelIdx) || 0, Object.keys(((_d = props.metadata) === null || _d === void 0 ? void 0 : _d.scorecardLevels) || {}).length) })) : null;
@@ -22,7 +21,7 @@ function ScorecardBadge(props) {
22
21
  const { useTelemetry } = (0, hooks_1.useThemeHooks)();
23
22
  const telemetry = useTelemetry();
24
23
  return (react_1.default.createElement(Link_1.Link, { to: slug },
25
- react_1.default.createElement(Tag_1.Tag, { onClick: () => telemetry.sendScorecardLinkClickedMessage([(0, utils_2.getBaseDataAttributes)('scorecardLink', 'tag')]), withStatusDot: true, statusDotColor: `var(${colorVariable})` }, level)));
24
+ react_1.default.createElement(Tag_1.Tag, { onClick: () => telemetry.sendScorecardLinkClickedMessage([(0, utils_1.getBaseDataAttributes)('scorecardLink', 'tag')]), withStatusDot: true, statusDotColor: `var(${colorVariable})` }, level)));
26
25
  }
27
26
  const CatalogInfoBlockWrapper = styled_components_1.default.div `
28
27
  position: relative;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CatalogItem, ResolvedFilter } from '../../core/types';
2
+ import type { CatalogItem, ResolvedFilter } from '../../core/types';
3
3
  export type Group = {
4
4
  title: string;
5
5
  items: CatalogItem[];
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { JSX } from 'react';
3
3
  import type { CodeBlockItems } from '../../components/CodeBlock/CodeBlock';
4
- import { ReportButtonProps } from '../../core/hooks';
4
+ import type { ReportButtonProps } from '../../core/hooks';
5
5
  export type CodeBlockControlsProps = {
6
6
  children?: React.ReactNode;
7
7
  className?: string;
@@ -77,12 +77,18 @@ exports.Dropdown = (0, react_1.forwardRef)(({ children, className, active, trigg
77
77
  }
78
78
  };
79
79
  const updateMenuPosition = (0, react_1.useCallback)(() => {
80
+ var _a;
81
+ var _b;
80
82
  const wrapper = wrapperRef.current;
81
83
  if (!wrapper)
82
84
  return;
83
85
  const rect = wrapper.getBoundingClientRect();
86
+ const menuHeight = (_b = (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) !== null && _b !== void 0 ? _b : 0;
87
+ const fitsBelow = rect.bottom + menuHeight <= window.innerHeight;
88
+ const fitsAbove = rect.top - menuHeight >= 0;
89
+ const openUpward = placement === 'top' ? fitsAbove || !fitsBelow : !fitsBelow && fitsAbove;
84
90
  const style = { minWidth: rect.width };
85
- if (placement === 'top') {
91
+ if (openUpward) {
86
92
  style.bottom = window.innerHeight - rect.top;
87
93
  }
88
94
  else {
@@ -1,4 +1,4 @@
1
- import { type PropsWithChildren, JSX } from 'react';
1
+ import { type JSX, type PropsWithChildren } from 'react';
2
2
  export type FilterOptionLabelProps = PropsWithChildren<{
3
3
  className?: string;
4
4
  }>;
@@ -1,4 +1,4 @@
1
- import { JSX } from 'react';
1
+ import type { JSX } from 'react';
2
2
  export declare function LoadMore({ icon, onClick, disabled, blinking, label, }: {
3
3
  icon: JSX.Element;
4
4
  onClick: () => void;
@@ -62,11 +62,10 @@ const TAB_LABELS = {
62
62
  },
63
63
  json: { translationKey: 'page.mcpNotAllowed.tabs.json', defaultLabel: 'JSON' },
64
64
  };
65
- // The report control is docs feedback, not useful on the connection page.
66
- const CODE_BLOCK_HEADER = { controls: { copy: {}, report: { hidden: true } } };
67
65
  function McpConnectionTabs({ options = DEFAULT_TAB_OPTIONS, className, }) {
68
- const { useTranslate } = (0, hooks_1.useThemeHooks)();
66
+ const { useTranslate, useTelemetry } = (0, hooks_1.useThemeHooks)();
69
67
  const { translate } = useTranslate();
68
+ const telemetry = useTelemetry();
70
69
  const { serverName, serverUrl, isMcpDisabled } = (0, hooks_1.useMCPConfig)();
71
70
  // The SSR markup of error pages is cached with the build-time origin, so the
72
71
  // tabs remount after hydration to pick up the real browser origin.
@@ -76,20 +75,31 @@ function McpConnectionTabs({ options = DEFAULT_TAB_OPTIONS, className, }) {
76
75
  return null;
77
76
  }
78
77
  const connection = { serverName, url: serverUrl };
78
+ const snippetHeader = (client, snippet) => ({
79
+ controls: {
80
+ copy: {
81
+ onClick: () => telemetry.sendMcpConnectionSnippetCopiedMessage([
82
+ Object.assign(Object.assign({}, (0, utils_1.getBaseDataAttributes)('mcpConnectionSnippet', 'button')), { client, snippet }),
83
+ ]),
84
+ },
85
+ // The report control is docs feedback, not useful on the connection page.
86
+ report: { hidden: true },
87
+ },
88
+ });
79
89
  return (react_1.default.createElement(McpConnectionTabsWrapper, { key: hydrated ? 'client' : 'ssr', "data-component-name": "MCP/McpConnectionTabs", "data-testid": "mcp-connection-tabs", className: className },
80
90
  react_1.default.createElement(Tabs_1.Tabs, { size: Tabs_1.TabsSize.SMALL }, options.map((option) => {
81
91
  const { translationKey, defaultLabel, icon: TabIcon } = TAB_LABELS[option];
82
- return (react_1.default.createElement(TabItemFragment_1.TabItemFragment, { key: option, label: translate(translationKey, defaultLabel), icon: TabIcon ? react_1.default.createElement(TabIcon, null) : undefined }, renderTabContent(option, connection, translate)));
92
+ return (react_1.default.createElement(TabItemFragment_1.TabItemFragment, { key: option, label: translate(translationKey, defaultLabel), icon: TabIcon ? react_1.default.createElement(TabIcon, null) : undefined }, renderTabContent(option, connection, translate, snippetHeader)));
83
93
  }))));
84
94
  }
85
- function renderTabContent(option, connection, translate) {
95
+ function renderTabContent(option, connection, translate, snippetHeader) {
86
96
  const terminalHint = (react_1.default.createElement(TabHint, null, translate('page.mcpNotAllowed.snippets.terminal.hint', 'Run this command in your terminal:')));
87
- const urlBlock = react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "text", source: connection.url, header: CODE_BLOCK_HEADER });
97
+ const urlBlock = (react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "text", source: connection.url, header: snippetHeader(option, 'chatgpt-app') }));
88
98
  const assistantPromptClient = {
89
99
  headline: translate('page.mcpNotAllowed.snippets.prompt.headline', 'Prompt'),
90
100
  content: (react_1.default.createElement(react_1.default.Fragment, null,
91
101
  react_1.default.createElement(TabHint, null, translate('page.mcpNotAllowed.snippets.prompt.hint', 'Or paste this prompt into the chat to have it add the server for you:')),
92
- react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "text", source: (0, utils_1.generateMcpInstallPrompt)(connection), header: CODE_BLOCK_HEADER, wrapContents: true }))),
102
+ react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "text", source: (0, utils_1.generateMcpInstallPrompt)(connection), header: snippetHeader(option, 'prompt'), wrapContents: true }))),
93
103
  };
94
104
  switch (option) {
95
105
  case 'claude':
@@ -98,13 +108,13 @@ function renderTabContent(option, connection, translate) {
98
108
  headline: translate('page.mcpNotAllowed.snippets.claudeCode.headline', 'Claude Code'),
99
109
  content: (react_1.default.createElement(react_1.default.Fragment, null,
100
110
  terminalHint,
101
- react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "shell", source: (0, utils_1.generateClaudeCodeCommand)(connection), header: CODE_BLOCK_HEADER, wrapContents: true }))),
111
+ react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "shell", source: (0, utils_1.generateClaudeCodeCommand)(connection), header: snippetHeader(option, 'claude-code'), wrapContents: true }))),
102
112
  },
103
113
  {
104
114
  headline: translate('page.mcpNotAllowed.snippets.claudeDesktop.headline', 'Claude Desktop'),
105
115
  content: (react_1.default.createElement(react_1.default.Fragment, null,
106
- react_1.default.createElement(TabHint, null, translate('page.mcpNotAllowed.snippets.claudeDesktop.instruction', 'In Claude Desktop, open Settings → Developer → Edit Config, add this to the configuration file, and restart Claude Desktop:')),
107
- react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "json", source: (0, utils_1.generateClaudeDesktopConfig)(connection), header: CODE_BLOCK_HEADER }))),
116
+ react_1.default.createElement(TabHint, null, translate('page.mcpNotAllowed.snippets.claudeDesktop.instruction', 'Open Customize → Connectors → Add custom connector and paste this server URL:')),
117
+ react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "text", source: connection.url, header: snippetHeader(option, 'claude-desktop') }))),
108
118
  },
109
119
  ]);
110
120
  case 'chatgpt':
@@ -113,7 +123,7 @@ function renderTabContent(option, connection, translate) {
113
123
  headline: translate('page.mcpNotAllowed.snippets.codexCli.headline', 'Codex CLI'),
114
124
  content: (react_1.default.createElement(react_1.default.Fragment, null,
115
125
  terminalHint,
116
- react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "shell", source: (0, utils_1.generateCodexCommand)(connection), header: CODE_BLOCK_HEADER, wrapContents: true }))),
126
+ react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "shell", source: (0, utils_1.generateCodexCommand)(connection), header: snippetHeader(option, 'codex'), wrapContents: true }))),
117
127
  },
118
128
  {
119
129
  headline: translate('page.mcpNotAllowed.snippets.chatgptApp.headline', 'ChatGPT desktop app'),
@@ -126,7 +136,7 @@ function renderTabContent(option, connection, translate) {
126
136
  case 'json':
127
137
  return (react_1.default.createElement(react_1.default.Fragment, null,
128
138
  react_1.default.createElement(TabHint, null, translate('page.mcpNotAllowed.snippets.json.hint', 'Add this server entry to your MCP client configuration file:')),
129
- react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "json", source: JSON.stringify({ [connection.serverName]: { url: connection.url, description: 'MCP Server' } }, null, 2), header: CODE_BLOCK_HEADER })));
139
+ react_1.default.createElement(CodeBlock_1.CodeBlock, { lang: "json", source: JSON.stringify({ [connection.serverName]: { url: connection.url, description: 'MCP Server' } }, null, 2), header: snippetHeader(option, 'json') })));
130
140
  }
131
141
  }
132
142
  function renderClientList(clients) {
@@ -178,10 +178,8 @@ exports.Markdown = styled_components_1.default.main
178
178
  }
179
179
 
180
180
  hr {
181
- border-top: 1px solid var(--md-hr-border-color);
182
- background-color: var(--md-hr-bg-color);
183
- height: var(--md-hr-height);
184
181
  margin: var(--md-hr-margin-vertical) 0;
182
+ border: var(--md-hr-border);
185
183
  }
186
184
 
187
185
  details:not(${constants_1.ACCORDION_SELECTOR}) {
@@ -46,6 +46,14 @@ exports.markdownBaseTableCss = (0, styled_components_1.css) `
46
46
  background-color: var(--md-table-header-bg-color);
47
47
  }
48
48
 
49
+ /* hide the header row when every cell is empty; one labelled cell keeps it visible */
50
+ thead:has(th:empty) {
51
+ display: none;
52
+ }
53
+ thead:has(th:not(:empty)) {
54
+ display: table-header-group;
55
+ }
56
+
49
57
  tr {
50
58
  background-color: var(--md-table-stripe-bg-color);
51
59
  }
@@ -62,9 +62,8 @@ exports.markdown = (0, styled_components_1.css) `
62
62
  * @tokens Markdown Horizontal Rule
63
63
  */
64
64
 
65
- --md-hr-bg-color: transparent; // @presenter Color
66
65
  --md-hr-border-color: var(--border-color-secondary); // @presenter Color
67
- --md-hr-height: unset;
66
+ --md-hr-border: 0.5px solid var(--md-hr-border-color); // @presenter Border
68
67
  --md-hr-margin-vertical: 20px; // @presenter Spacing
69
68
 
70
69
  /**
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from 'react';
2
- import { PageActionType } from '../../core/hooks';
2
+ import type { PageActionType } from '../../core/hooks';
3
3
  type PageActionProps = {
4
4
  pageSlug?: string;
5
5
  mcpUrl?: string;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { JSX } from 'react';
3
3
  import type { AiSearchConversationItem, SearchAiMessageResource, ToolCall, ContentSegment } from '../../core/types';
4
- import { AiSearchError } from '../../core/constants';
4
+ import type { AiSearchError } from '../../core/constants';
5
5
  export type SearchAiDialogProps = {
6
6
  response: string | undefined;
7
7
  isGeneratingResponse: boolean;
@@ -80,6 +80,7 @@ function SearchAiDialog({ isGeneratingResponse, response, initialMessage, error,
80
80
  if (!(initialMessage === null || initialMessage === void 0 ? void 0 : initialMessage.trim().length)) {
81
81
  return;
82
82
  }
83
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent -- appends the initial message into the conversation state lifted to the search root once the dialog mounts
83
84
  setConversation((prev) => [
84
85
  ...prev,
85
86
  { role: constants_1.AiSearchConversationRole.USER, content: initialMessage },
@@ -89,6 +90,7 @@ function SearchAiDialog({ isGeneratingResponse, response, initialMessage, error,
89
90
  if (response === undefined || conversation.length === 0 || error) {
90
91
  return;
91
92
  }
93
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent -- merges the streamed assistant response into the lifted conversation state as chunks arrive
92
94
  setConversation((prev) => {
93
95
  const lastMessage = prev[prev.length - 1];
94
96
  const content = response || '';
@@ -127,6 +129,7 @@ function SearchAiDialog({ isGeneratingResponse, response, initialMessage, error,
127
129
  ]);
128
130
  (0, react_1.useEffect)(() => {
129
131
  if (error) {
132
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent -- drops the pending message from the lifted conversation state once the request errors
130
133
  setConversation((prev) => prev.slice(0, -1));
131
134
  }
132
135
  }, [error, setConversation]);
@@ -1,5 +1,4 @@
1
- import React from 'react';
2
- import type { JSX } from 'react';
1
+ import React, { type JSX } from 'react';
3
2
  import { FeedbackType, type SearchAiMessageResource, type ToolCall, type ContentSegment } from '../../core/types';
4
3
  import { AiSearchConversationRole } from '../../core/constants';
5
4
  export type SearchAiMessageProps = {
@@ -41,10 +41,8 @@ const react_1 = __importStar(require("react"));
41
41
  const styled_components_1 = __importDefault(require("styled-components"));
42
42
  const types_1 = require("../../core/types");
43
43
  const constants_1 = require("../../core/constants");
44
- const types_2 = require("../../core/types");
45
44
  const Link_1 = require("../../components/Link/Link");
46
45
  const Tag_1 = require("../../components/Tag/Tag");
47
- const constants_2 = require("../../core/constants");
48
46
  const hooks_1 = require("../../core/hooks");
49
47
  const Markdown_1 = require("../../components/Markdown/Markdown");
50
48
  const DocumentIcon_1 = require("../../icons/DocumentIcon/DocumentIcon");
@@ -70,7 +68,7 @@ function getExecuteDescription(args) {
70
68
  }
71
69
  function getToolCallDisplayText(toolCall) {
72
70
  var _a;
73
- if (toolCall.name === types_2.ToolCallName.Execute) {
71
+ if (toolCall.name === types_1.ToolCallName.Execute) {
74
72
  const description = getExecuteDescription(toolCall.args);
75
73
  if (description) {
76
74
  return { inProgressText: description, completedText: description };
@@ -123,8 +121,8 @@ function SearchAiMessageComponent({ role, content, isThinking, resources, classN
123
121
  }
124
122
  };
125
123
  return (react_1.default.createElement(SearchAiMessageWrapper, { "data-component-name": "Search/SearchAiMessage", $role: role, className: className, "data-testid": "search-ai-message" },
126
- role === constants_2.AiSearchConversationRole.ASSISTANT && (react_1.default.createElement(AiStarsIcon_1.AiStarsIcon, { size: "32px", background: "var(--search-ai-icon-bg-color)", borderRadius: "var(--border-radius-lg)", color: "var(--search-ai-icon-color)", margin: "0 var(--spacing-xs) 0 0" })),
127
- react_1.default.createElement(MessageContentWrapper, null, role === constants_2.AiSearchConversationRole.ASSISTANT ? (react_1.default.createElement(react_1.default.Fragment, null,
124
+ role === constants_1.AiSearchConversationRole.ASSISTANT && (react_1.default.createElement(AiStarsIcon_1.AiStarsIcon, { size: "32px", background: "var(--search-ai-icon-bg-color)", borderRadius: "var(--border-radius-lg)", color: "var(--search-ai-icon-color)", margin: "0 var(--spacing-xs) 0 0" })),
125
+ react_1.default.createElement(MessageContentWrapper, null, role === constants_1.AiSearchConversationRole.ASSISTANT ? (react_1.default.createElement(react_1.default.Fragment, null,
128
126
  react_1.default.createElement(MessageWrapper, { $role: role },
129
127
  contentSegments.map((segment, index) => {
130
128
  if (segment.type === 'tool') {
@@ -189,7 +187,7 @@ const SearchAiMessageWrapper = styled_components_1.default.div `
189
187
  flex-direction: row;
190
188
  align-items: flex-start;
191
189
  width: 100%;
192
- justify-content: ${({ $role }) => $role === constants_2.AiSearchConversationRole.USER ? 'flex-end' : 'flex-start'};
190
+ justify-content: ${({ $role }) => $role === constants_1.AiSearchConversationRole.USER ? 'flex-end' : 'flex-start'};
193
191
  `;
194
192
  const MessageContentWrapper = styled_components_1.default.div `
195
193
  display: flex;
@@ -215,7 +213,7 @@ const ResponseText = (0, styled_components_1.default)(Markdown_1.Markdown) `
215
213
  }
216
214
  `;
217
215
  const MessageWrapper = styled_components_1.default.div `
218
- padding: ${({ $role }) => $role === constants_2.AiSearchConversationRole.USER
216
+ padding: ${({ $role }) => $role === constants_1.AiSearchConversationRole.USER
219
217
  ? 'var(--spacing-sm)'
220
218
  : 'var(--spacing-sm) var(--spacing-sm) var(--spacing-xs) var(--spacing-sm)'};
221
219
  border-radius: var(--border-radius-xl);
@@ -223,11 +221,11 @@ const MessageWrapper = styled_components_1.default.div `
223
221
  max-width: 100%;
224
222
  word-wrap: break-word;
225
223
  white-space: pre-wrap;
226
- background-color: ${({ $role }) => $role === constants_2.AiSearchConversationRole.USER
224
+ background-color: ${({ $role }) => $role === constants_1.AiSearchConversationRole.USER
227
225
  ? 'var(--search-ai-user-bg-color)'
228
226
  : 'var(--search-ai-assistant-bg-color)'};
229
- border: ${({ $role }) => $role === constants_2.AiSearchConversationRole.USER ? 'none' : 'var(--search-ai-assistant-border)'};
230
- color: ${({ $role }) => $role === constants_2.AiSearchConversationRole.USER
227
+ border: ${({ $role }) => $role === constants_1.AiSearchConversationRole.USER ? 'none' : 'var(--search-ai-assistant-border)'};
228
+ color: ${({ $role }) => $role === constants_1.AiSearchConversationRole.USER
231
229
  ? 'var(--search-ai-user-text-color)'
232
230
  : 'var(--search-ai-assistant-text-color)'};
233
231
  `;
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from 'react';
2
- import { AiSearchError } from '../../core/constants';
2
+ import type { AiSearchError } from '../../core/constants';
3
3
  export type SearchAiResponseProps = {
4
4
  question: string;
5
5
  isGeneratingResponse: boolean;
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from 'react';
2
- import { type SearchFacet, type SearchFilterItem } from '../../core/types';
2
+ import type { SearchFacet, SearchFilterItem } from '../../core/types';
3
3
  type SearchGroupsProps = {
4
4
  facets: SearchFacet[];
5
5
  searchFilter: SearchFilterItem[];
@@ -1 +1,3 @@
1
1
  export declare const MARKDOWN_CLASS_NAME = "md";
2
+ export declare const MARKDOC_EXAMPLE_TAG = "markdoc-example";
3
+ export declare const EXAMPLE_CONTENT_ATTRIBUTE = "exampleContent";
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MARKDOWN_CLASS_NAME = void 0;
3
+ exports.EXAMPLE_CONTENT_ATTRIBUTE = exports.MARKDOC_EXAMPLE_TAG = exports.MARKDOWN_CLASS_NAME = void 0;
4
4
  exports.MARKDOWN_CLASS_NAME = 'md';
5
+ exports.MARKDOC_EXAMPLE_TAG = 'markdoc-example';
6
+ exports.EXAMPLE_CONTENT_ATTRIBUTE = 'exampleContent';
5
7
  //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ export declare const AccordionGroupContext: import("react").Context<string | null>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccordionGroupContext = void 0;
4
+ const react_1 = require("react");
5
+ exports.AccordionGroupContext = (0, react_1.createContext)(null);
6
+ //# sourceMappingURL=AccordionGroupContext.js.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Whether the first heading inside the enclosing `Markdown` mounts the page actions.
3
+ * Without a provider `Heading` falls back to the page type in the page metadata.
4
+ */
5
+ export declare const PageActionsContext: import("react").Context<boolean | null>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageActionsContext = void 0;
4
+ const react_1 = require("react");
5
+ /**
6
+ * Whether the first heading inside the enclosing `Markdown` mounts the page actions.
7
+ * Without a provider `Heading` falls back to the page type in the page metadata.
8
+ */
9
+ exports.PageActionsContext = (0, react_1.createContext)(null);
10
+ //# sourceMappingURL=PageActionsContext.js.map
@@ -1,7 +1,9 @@
1
1
  export * from './ThemeDataContext';
2
2
  export * from './MarkdownLinkContext';
3
+ export * from './PageActionsContext';
3
4
  export * from './CodeWalkthrough/CodeWalkthroughControlsContext';
4
5
  export * from './CodeWalkthrough/CodeWalkthroughStepsContext';
6
+ export * from './AccordionGroupContext';
5
7
  export * from './CodeSnippetContext';
6
8
  export * from './SearchContext';
7
9
  export * from './Toast/ToastContext';
@@ -16,8 +16,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ThemeDataContext"), exports);
18
18
  __exportStar(require("./MarkdownLinkContext"), exports);
19
+ __exportStar(require("./PageActionsContext"), exports);
19
20
  __exportStar(require("./CodeWalkthrough/CodeWalkthroughControlsContext"), exports);
20
21
  __exportStar(require("./CodeWalkthrough/CodeWalkthroughStepsContext"), exports);
22
+ __exportStar(require("./AccordionGroupContext"), exports);
21
23
  __exportStar(require("./CodeSnippetContext"), exports);
22
24
  __exportStar(require("./SearchContext"), exports);
23
25
  __exportStar(require("./Toast/ToastContext"), exports);
@@ -1,4 +1,4 @@
1
- import { BffCatalogEntity, BffCatalogRelatedEntity } from '../../types';
1
+ import type { BffCatalogEntity, BffCatalogRelatedEntity } from '../../types';
2
2
  type CatalogEntitySchemaProps = {
3
3
  entity: BffCatalogEntity;
4
4
  relatedEntity: BffCatalogRelatedEntity | null;
@@ -1,4 +1,4 @@
1
- import { BaseEntity, CatalogColumn } from '../../../components/Catalog/CatalogTableView/CatalogTableView';
1
+ import type { BaseEntity, CatalogColumn } from '../../../components/Catalog/CatalogTableView/CatalogTableView';
2
2
  type CatalogTableHeaderCellActionsProps<T extends BaseEntity> = {
3
3
  column: CatalogColumn<T>;
4
4
  currentSortOption?: string | null;
@@ -1,6 +1,6 @@
1
- import { type Node, type Edge, type Connection, OnNodesChange, OnEdgesChange } from '@xyflow/react';
2
- import { type CatalogEntityNodeData } from '../../../components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNode';
3
- import { BffCatalogEntity, BffCatalogRelatedEntity } from '../../types';
1
+ import { type OnNodesChange, type OnEdgesChange, type Node, type Edge, type Connection } from '@xyflow/react';
2
+ import type { CatalogEntityNodeData } from '../../../components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNode';
3
+ import type { BffCatalogEntity, BffCatalogRelatedEntity } from '../../types';
4
4
  export type UseGraphProps = {
5
5
  entity: BffCatalogEntity;
6
6
  relations: BffCatalogRelatedEntity[];
@@ -58,6 +58,7 @@ function useCodeWalkthroughSteps({ steps, enableDeepLink, root, }) {
58
58
  startOffset: markersMinTopOffset < endOffset ? startOffset : 0,
59
59
  });
60
60
  }
61
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-chain-state-updates -- marker geometry is derived from post-layout measurements (offsetTop, clientHeight, window.innerHeight)
61
62
  setMarkers(markers.reduce((acc, marker, index) => {
62
63
  var _a;
63
64
  const step = visibleSteps[index];
@@ -205,19 +205,23 @@ function useActiveHeading(contentElement, displayedHeadings) {
205
205
  return;
206
206
  }
207
207
  const headers = findHeaders(contentElement);
208
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-chain-state-updates -- headings and the initial active heading come from DOM queries and scroll measurement, available only after layout
208
209
  setHeadingElements(headers);
209
210
  if (headers.length > 0 && !heading) {
210
211
  if (isTopOfPage()) {
212
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-chain-state-updates -- see above
211
213
  setHeading(headers[0].id);
212
214
  }
213
215
  else {
214
216
  const totalHeight = scrollY + window.innerHeight;
215
217
  if (totalHeight >= document.body.scrollHeight - 10) {
218
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-chain-state-updates -- see above
216
219
  setHeading(((_a = headers[headers.length - 1]) === null || _a === void 0 ? void 0 : _a.id) || undefined);
217
220
  }
218
221
  else {
219
222
  const triggerOffset = getTriggerOffset();
220
223
  const activeHeader = findActiveHeaderByVirtualPosition(headers, scrollY, triggerOffset);
224
+ // oxlint-disable-next-line react-you-might-not-need-an-effect/no-chain-state-updates -- see above
221
225
  setHeading(activeHeader.id);
222
226
  }
223
227
  }
@@ -32,6 +32,8 @@ function useActiveSectionId(location, hasOverviewPage = false, withNavbar = true
32
32
  const section = sections[i];
33
33
  const rect = section.getBoundingClientRect();
34
34
  if (rect.y < heightOffset && rect.bottom > heightOffset) {
35
+ if (isSkippedContent(section))
36
+ continue;
35
37
  setItemId(section.getAttribute('data-section-id') || '');
36
38
  return;
37
39
  }
@@ -56,4 +58,8 @@ function useActiveSectionId(location, hasOverviewPage = false, withNavbar = true
56
58
  }, [location, heightOffset, scrollListener]);
57
59
  return itemId;
58
60
  }
61
+ function isSkippedContent(element) {
62
+ return (typeof element.checkVisibility === 'function' &&
63
+ !element.checkVisibility({ contentVisibilityAuto: true }));
64
+ }
59
65
  //# sourceMappingURL=use-active-section-id.js.map