---
import type { Headers } from '../../libs/header'
import { isOpenAPIV2Items } from '../../libs/items'
import { isHeaderParameter } from '../../libs/parameter'
import Items from '../Items.astro'
import Key from '../Key.astro'
import Keys from '../Keys.astro'
import Md from '../Md.astro'
import Parameter from '../parameter/Parameter.astro'
import Section from '../Section.astro'

interface Props {
  headers: Headers
}

const headers = Object.entries(Astro.props.headers).filter(([key]) => key.toLowerCase() !== 'content-type')
---

{
  headers.length > 0 && (
    <Section level={4} title="Headers">
      <Keys>
        {headers.map(([name, header]) =>
          isOpenAPIV2Items(header) ? (
            <Key {name}>
              <Items items={header} />
              <Md text={header.description} />
            </Key>
          ) : isHeaderParameter(header) ? (
            <Parameter parameter={{ ...header, name }} />
          ) : null,
        )}
      </Keys>
    </Section>
  )
}
