import { useEffect } from 'react' import { DefaultLayout } from '@/frame/components/DefaultLayout' import { MarkdownContent } from '@/frame/components/ui/MarkdownContent' import { Lead } from '@/frame/components/ui/Lead' import { PermissionsStatement } from '@/frame/components/ui/PermissionsStatement' import { RestOperation } from './RestOperation' import { useAutomatedPageContext } from '@/automated-pipelines/components/AutomatedPageContext' import { Operation } from './types' import { ClientSideRedirects } from '@/rest/components/ClientSideRedirects' import { RestRedirect } from '@/rest/components/RestRedirect' import { Breadcrumbs } from '@/frame/components/page-header/Breadcrumbs' export type StructuredContentT = { restOperations: Operation[] } export const RestReferencePage = ({ restOperations }: StructuredContentT) => { const { title, intro, renderedPage, permissions, product } = useAutomatedPageContext() // Scrollable code blocks in our REST API docs and elsewhere aren't accessible // via keyboard navigation without setting tabindex="0". But we don't want to set // this attribute on every `
` code block, only the ones where there are scroll
  // bars because the content isn't all visible.
  useEffect(() => {
    const codeBlocks = document.querySelectorAll('pre')

    for (const codeBlock of codeBlocks) {
      if (
        codeBlock.scrollWidth > codeBlock.clientWidth ||
        codeBlock.scrollHeight > codeBlock.clientHeight
      ) {
        codeBlock.setAttribute('tabindex', '0')
      }
    }
  }, [])

  return (
    
      {/* Doesn't matter *where* this is included because it will
      never render anything. It always just return null. */}
      
      
      

{title}

{intro && ( {intro} )} {renderedPage && {renderedPage}} {restOperations.length > 0 && ( {restOperations.map((operation) => ( ))} )}
) }