@clarify-labs/renderer 0.2.0 → 0.4.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 (38) hide show
  1. package/output/{AppShell-4KB3lU-n.cjs → AppShell-CZw1MrPG.cjs} +977 -408
  2. package/output/AppShell-CZw1MrPG.cjs.map +1 -0
  3. package/output/{AppShell-Ci894P_0.js → AppShell-nQnuKyn2.js} +974 -411
  4. package/output/AppShell-nQnuKyn2.js.map +1 -0
  5. package/output/client.cjs +1 -1
  6. package/output/client.js +1 -1
  7. package/output/components/PageNavigation.d.ts +5 -0
  8. package/output/components/index.d.ts +1 -0
  9. package/output/context.d.ts +2 -0
  10. package/output/i18n.d.ts +5 -0
  11. package/output/index.cjs +1351 -346
  12. package/output/index.cjs.map +1 -1
  13. package/output/index.js +1351 -346
  14. package/output/index.js.map +1 -1
  15. package/output/openapi/example-panels.d.ts +31 -0
  16. package/output/openapi/helpers.d.ts +24 -0
  17. package/output/openapi/index.d.ts +2 -19
  18. package/output/openapi/openapi-page.d.ts +19 -0
  19. package/output/openapi/request-code.d.ts +16 -0
  20. package/output/openapi/schema-properties.d.ts +15 -0
  21. package/output/openapi/spec-path.d.ts +2 -0
  22. package/output/openapi/types.d.ts +66 -0
  23. package/output/{render-bPMMBoDH.js → render-BCiQn6Q1.js} +2 -2
  24. package/output/{render-bPMMBoDH.js.map → render-BCiQn6Q1.js.map} +1 -1
  25. package/output/{render-z9rSQ00n.cjs → render-CZsdzmme.cjs} +2 -2
  26. package/output/{render-z9rSQ00n.cjs.map → render-CZsdzmme.cjs.map} +1 -1
  27. package/output/renderer.css +1374 -603
  28. package/output/server.cjs +1 -1
  29. package/output/server.js +1 -1
  30. package/output/shell/ContentActions.d.ts +1 -0
  31. package/output/shell/Header.d.ts +4 -3
  32. package/output/shell/icons.d.ts +4 -0
  33. package/output/shell/mobile.d.ts +2 -1
  34. package/output/types.d.ts +62 -9
  35. package/output/utils/path.d.ts +2 -0
  36. package/package.json +10 -9
  37. package/output/AppShell-4KB3lU-n.cjs.map +0 -1
  38. package/output/AppShell-Ci894P_0.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../source/mdx/primitives.tsx","../source/openapi/utils.ts","../source/openapi/index.tsx","../source/mdx/components.ts"],"sourcesContent":["import clsx from 'clsx'\nimport { createElement, type ComponentPropsWithoutRef, type ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { Button, Callout, Card, CardGroup, Heading, PageFooter, Prose } from '../components'\nimport { Code, CodeGroup, Pre } from '../components/Code'\n\nexport function wrapper(arg0: { children: ReactNode }) { const { children } = arg0\n\n return (\n <article className=\"clarify-mdx-page flex h-full flex-col pt-16 pb-10\">\n <Prose className=\"flex-auto\">{children}</Prose>\n <PageFooter />\n </article>\n )\n}\n\nexport function a(arg0: ComponentPropsWithoutRef<'a'>) { const { href = '', ...props } = arg0\n\n if (href.startsWith('/') && !href.startsWith('//')) {\n return <Link to={href} {...props} />\n }\n\n return <a href={href} {...props} />\n}\n\nexport const code = Code\nexport const pre = Pre\nexport { Button, Callout, Card, CardGroup, CodeGroup }\n\nexport function h2(props: Omit<ComponentPropsWithoutRef<typeof Heading>, 'level'>) {\n return createElement(Heading, { level: 2, ...props })\n}\n\nexport function h3(props: Omit<ComponentPropsWithoutRef<typeof Heading>, 'level'>) {\n return createElement(Heading, { level: 3, ...props })\n}\n\nfunction InfoIcon(props: ComponentPropsWithoutRef<'svg'>) {\n return (\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"8\" strokeWidth=\"0\" />\n <path fill=\"none\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.5\" d=\"M6.75 7.75h1.5v3.5\" />\n <circle cx=\"8\" cy=\"4\" r=\".5\" fill=\"none\" />\n </svg>\n )\n}\n\nexport function Note(arg0: { children: ReactNode }) { const { children } = arg0\n\n return (\n <div className=\"clarify-note my-6 flex gap-2.5 rounded-2xl border border-emerald-500/20 bg-emerald-50/50 p-4 text-sm/6 text-emerald-900 dark:border-emerald-500/30 dark:bg-emerald-500/5 dark:text-emerald-200 dark:[--tw-prose-links-hover:var(--color-emerald-300)] dark:[--tw-prose-links:var(--color-white)]\">\n <InfoIcon className=\"mt-1 h-4 w-4 flex-none fill-emerald-500 stroke-white dark:fill-emerald-200/20 dark:stroke-emerald-200\" />\n <div className=\"*:first:mt-0 *:last:mb-0\">{children}</div>\n </div>\n )\n}\n\nexport function Row(arg0: { children: ReactNode }) { const { children } = arg0\n\n return <div className=\"clarify-row grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2\">{children}</div>\n}\n\nexport function Col(arg0: { children: ReactNode; sticky?: boolean }) { const { children, sticky = false } = arg0\n\n return <div className={clsx('clarify-col *:first:mt-0 *:last:mb-0', sticky && 'xl:sticky xl:top-24')}>{children}</div>\n}\n\nexport function Properties(arg0: { children: ReactNode }) { const { children } = arg0\n\n return (\n <div className=\"clarify-properties my-6\">\n <ul\n role=\"list\"\n className=\"m-0 list-none divide-y divide-zinc-900/5 p-0 dark:divide-white/5\"\n >\n {children}\n </ul>\n </div>\n )\n}\n\nexport function Property(arg0: { name: string; children: ReactNode; type?: string }) { const { name, children, type } = arg0\n\n return (\n <li className=\"clarify-property m-0 px-0 py-4 first:pt-0 last:pb-0\">\n <dl className=\"m-0 flex flex-wrap items-center gap-x-3 gap-y-2\">\n <dt className=\"sr-only\">Name</dt>\n <dd>\n <code>{name}</code>\n </dd>\n {type ? (\n <>\n <dt className=\"sr-only\">Type</dt>\n <dd className=\"font-mono text-xs text-zinc-400 dark:text-zinc-500\">{type}</dd>\n </>\n ) : null}\n <dt className=\"sr-only\">Description</dt>\n <dd className=\"w-full flex-none *:first:mt-0 *:last:mb-0\">{children}</dd>\n </dl>\n </li>\n )\n}\n","import type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'\n\nexport type OpenAPISpec = OpenAPIV3.Document | OpenAPIV3_1.Document\nexport type OpenAPIOperation = OpenAPIV3.OperationObject | OpenAPIV3_1.OperationObject\n\nexport const OPENAPI_HTTP_METHODS = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'] as const\n\nexport type OpenAPIHttpMethod = typeof OPENAPI_HTTP_METHODS[number]\n\nexport function isOpenAPIHttpMethod(method: string): method is OpenAPIHttpMethod {\n return (OPENAPI_HTTP_METHODS as readonly string[]).includes(method.toLowerCase())\n}\n\nexport function getOpenApiOperation(spec: OpenAPISpec, path: string, method: string): OpenAPIOperation | undefined {\n if (!isOpenAPIHttpMethod(method)) return undefined\n return spec.paths?.[path]?.[method.toLowerCase() as OpenAPIHttpMethod]\n}\n\nexport function listOpenApiOperations(spec: OpenAPISpec): Array<{ path: string; method: OpenAPIHttpMethod; operation: OpenAPIOperation }> {\n const paths = spec.paths ?? {}\n const operations: Array<{ path: string; method: OpenAPIHttpMethod; operation: OpenAPIOperation }> = []\n\n for (const [path, pathItem] of Object.entries(paths)) {\n if (!pathItem) continue\n for (const method of OPENAPI_HTTP_METHODS) {\n const operation = pathItem[method]\n if (operation) operations.push({ path, method, operation })\n }\n }\n\n return operations\n}\n","import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { slug } from 'github-slugger'\nimport { CheckIcon, ChevronsUpDownIcon } from 'lucide-react'\nimport { useRef, useState, type ReactNode } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { Heading, PageFooter, Prose } from '../components'\nimport { useClarifyConfig, useOpenApis } from '../context'\nimport { Col, Properties, Property, Row } from '../mdx/primitives'\n\nimport { getOpenApiOperation, listOpenApiOperations } from './utils'\nimport type { OpenAPIOperation, OpenAPISpec } from './utils'\n\nexport type { OpenAPIOperation, OpenAPISpec } from './utils'\n\nexport type OpenApiPageProps = {\n spec?: OpenAPISpec\n specPath?: string\n}\n\nexport type ApiEndpointProps = {\n spec: OpenAPISpec\n path: string\n method: string\n}\n\nexport type OpenApiEndpointProps = {\n specPath: string\n path: string\n method: string\n}\n\ntype OpenApiRecord = Record<string, unknown>\n\ntype OpenApiParameter = {\n name?: string\n in?: string\n required?: boolean\n description?: string\n schema?: unknown\n}\n\ntype OpenApiMediaType = {\n schema?: unknown\n example?: unknown\n examples?: Record<string, unknown>\n}\n\ntype OpenApiResponse = {\n description?: string\n content?: Record<string, OpenApiMediaType>\n}\n\ntype MediaTypeEntry = {\n mediaType: string\n value: OpenApiMediaType\n}\n\ntype ExampleEntry = {\n key: string\n title: string\n summary?: string\n value: unknown\n generated?: boolean\n}\n\nconst VIRTUAL_PREFIX = 'virtual:clarify-page/'\n\nfunction isRecord(value: unknown): value is OpenApiRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isReference(value: unknown): value is { $ref: string } {\n return isRecord(value) && typeof value.$ref === 'string'\n}\n\nfunction resolveReferenceName(ref: string): string {\n return ref.split('/').filter(Boolean).at(-1) ?? ref\n}\n\nfunction getPathItem(spec: OpenAPISpec, path: string): OpenApiRecord | undefined {\n const pathItem = spec.paths?.[path]\n return isRecord(pathItem) ? pathItem : undefined\n}\n\nfunction getOperationParameters(spec: OpenAPISpec, path: string, operation: OpenAPIOperation): OpenApiParameter[] {\n const pathParameters = getPathItem(spec, path)?.parameters\n const operationParameters = (operation as OpenApiRecord).parameters\n\n return [...(Array.isArray(pathParameters) ? pathParameters : []), ...(Array.isArray(operationParameters) ? operationParameters : [])]\n .filter((parameter): parameter is OpenApiParameter => isRecord(parameter) && !isReference(parameter))\n}\n\nfunction getRequestBody(operation: OpenAPIOperation): OpenApiRecord | undefined {\n const requestBody = (operation as OpenApiRecord).requestBody\n return isRecord(requestBody) && !isReference(requestBody) ? requestBody : undefined\n}\n\nfunction getMediaTypeEntries(content: unknown): MediaTypeEntry[] {\n if (!isRecord(content)) return []\n\n return Object.entries(content)\n .filter(([, value]) => isRecord(value) && !isReference(value))\n .map(([mediaType, value]) => ({ mediaType, value: value as OpenApiMediaType }))\n .sort((a, z) => {\n const aJson = a.mediaType.includes('json') ? 0 : 1\n const zJson = z.mediaType.includes('json') ? 0 : 1\n return aJson - zJson\n })\n}\n\nfunction getJsonLikeContent(content: unknown): MediaTypeEntry | undefined {\n return getMediaTypeEntries(content)[0]\n}\n\nfunction getExampleValue(example: unknown): unknown {\n if (isRecord(example) && 'value' in example) return example.value\n if (isRecord(example) && 'externalValue' in example) return undefined\n return example\n}\n\nfunction getExampleTitle(key: string, example: unknown): { title: string; summary?: string } {\n if (isRecord(example)) {\n const summary = typeof example.summary === 'string' ? example.summary : undefined\n return { title: summary ?? key, summary }\n }\n\n return { title: key }\n}\n\nfunction getExampleEntries(mediaType?: OpenApiMediaType): ExampleEntry[] {\n if (!mediaType) return []\n\n if (isRecord(mediaType.examples)) {\n const examples: ExampleEntry[] = []\n\n for (const [key, example] of Object.entries(mediaType.examples)) {\n const value = getExampleValue(example)\n if (typeof value === 'undefined') continue\n\n const { title, summary } = getExampleTitle(key, example)\n examples.push({ key, title, summary, value })\n }\n\n if (examples.length > 0) return examples\n }\n\n if (typeof mediaType.example !== 'undefined') {\n return [{ key: 'default', title: 'Example', value: mediaType.example }]\n }\n\n const generated = schemaToExample(mediaType.schema)\n return typeof generated === 'undefined' ? [] : [{ key: 'schema', title: 'Schema example', value: generated, generated: true }]\n}\n\nfunction getContentExample(mediaType?: OpenApiMediaType): unknown {\n return getExampleEntries(mediaType)[0]?.value\n}\n\nfunction schemaToType(schema: unknown): string | undefined {\n if (!isRecord(schema)) return undefined\n if (isReference(schema)) return resolveReferenceName(schema.$ref)\n if (Array.isArray(schema.enum)) return schema.enum.map(String).join(' | ')\n\n const oneOf = schema.oneOf ?? schema.anyOf\n if (Array.isArray(oneOf)) {\n return oneOf.map(schemaToType).filter(Boolean).join(' | ')\n }\n\n if (schema.type === 'array') {\n return `${schemaToType(schema.items) ?? 'unknown'}[]`\n }\n\n return typeof schema.type === 'string' ? schema.type : undefined\n}\n\nfunction schemaToExample(schema: unknown, depth = 0): unknown {\n if (!isRecord(schema) || depth > 3) return undefined\n if (typeof schema.example !== 'undefined') return schema.example\n if (typeof schema.default !== 'undefined') return schema.default\n if (Array.isArray(schema.enum)) return schema.enum[0]\n if (isReference(schema)) return { id: resolveReferenceName(schema.$ref) }\n\n if (schema.type === 'array') {\n return [schemaToExample(schema.items, depth + 1) ?? 'string']\n }\n\n if (schema.type === 'object' || isRecord(schema.properties)) {\n const properties = isRecord(schema.properties) ? schema.properties : {}\n return Object.fromEntries(\n Object.entries(properties).slice(0, 8).map(([name, propertySchema]) => [\n name,\n schemaToExample(propertySchema, depth + 1) ?? exampleForType(schemaToType(propertySchema)),\n ]),\n )\n }\n\n return exampleForType(schemaToType(schema))\n}\n\nfunction exampleForType(type?: string): unknown {\n if (!type) return 'string'\n if (type.endsWith('[]')) return []\n if (type.includes('integer') || type.includes('number')) return 42\n if (type.includes('boolean')) return true\n if (type.includes('object')) return {}\n return 'string'\n}\n\nfunction stringifyExample(value: unknown): string {\n if (typeof value === 'undefined') return ''\n if (typeof value === 'string') return value\n return JSON.stringify(value, null, 2)\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, `'\"'\"'`)}'`\n}\n\nfunction getServerUrl(spec: OpenAPISpec): string {\n const servers = (spec as OpenApiRecord).servers\n if (!Array.isArray(servers)) return ''\n\n const firstServer = servers.find(isRecord)\n return typeof firstServer?.url === 'string' ? firstServer.url : ''\n}\n\nfunction buildOperationUrl(spec: OpenAPISpec, path: string, parameters: OpenApiParameter[]): string {\n const query = parameters\n .filter((parameter) => parameter.in === 'query' && parameter.name)\n .map((parameter) => `${parameter.name}={${parameter.name}}`)\n .join('&')\n const serverUrl = getServerUrl(spec).replace(/\\/$/, '')\n return `${serverUrl}${path}${query ? `?${query}` : ''}`\n}\n\nfunction buildCurlExample(arg0: {\n spec: OpenAPISpec\n path: string\n method: string\n parameters: OpenApiParameter[]\n requestContent?: { mediaType: string; value: OpenApiMediaType }\n}): string { const {\n spec,\n path,\n method,\n parameters,\n requestContent,\n} = arg0\n\n const url = buildOperationUrl(spec, path, parameters)\n const lines = [`curl ${method === 'GET' ? '-G ' : ''}${shellQuote(url)}`]\n\n if (method !== 'GET') lines.push(` -X ${method}`)\n lines.push(\" -H 'Authorization: Bearer {token}'\")\n lines.push(\" -H 'Accept: application/json'\")\n\n const requestExample = getContentExample(requestContent?.value)\n if (requestContent && typeof requestExample !== 'undefined') {\n lines.push(` -H 'Content-Type: ${requestContent.mediaType}'`)\n lines.push(` -d ${shellQuote(stringifyExample(requestExample))}`)\n }\n\n return lines.join(' \\\\\\n')\n}\n\nfunction getResponseEntries(operation: OpenAPIOperation): Array<{ status: string; response: OpenApiResponse }> {\n const responses = (operation as OpenApiRecord).responses\n if (!isRecord(responses)) return []\n\n return Object.entries(responses)\n .filter(([, response]) => isRecord(response) && !isReference(response))\n .map(([status, response]) => ({ status, response: response as OpenApiResponse }))\n}\n\nfunction SchemaProperties(arg0: { title: string; schema: unknown }): ReactNode { const { title, schema } = arg0\n\n const targetSchema = isReference(schema) ? undefined : schema\n const properties = isRecord(targetSchema) && isRecord(targetSchema.properties) ? targetSchema.properties : undefined\n const required = isRecord(targetSchema) && Array.isArray(targetSchema.required) ? targetSchema.required.map(String) : []\n\n if (!properties || Object.keys(properties).length === 0) return null\n\n return (\n <div>\n <h3>{title}</h3>\n <Properties>\n {Object.entries(properties).map(([name, propertySchema]) => {\n const property = isRecord(propertySchema) ? propertySchema : {}\n const type = schemaToType(propertySchema)\n const description = typeof property.description === 'string' ? property.description : undefined\n const isRequired = required.includes(name)\n\n return (\n <Property key={name} name={name} type={isRequired && type ? `${type}, required` : type}>\n {description ?? (isRequired ? 'Required.' : 'Optional.')}\n </Property>\n )\n })}\n </Properties>\n </div>\n )\n}\n\nfunction ParameterList(arg0: { title: string; parameters: OpenApiParameter[] }): ReactNode { const { title, parameters } = arg0\n\n if (parameters.length === 0) return null\n\n return (\n <div>\n <h3>{title}</h3>\n <Properties>\n {parameters.map((parameter) => (\n <Property\n key={`${parameter.in}-${parameter.name}`}\n name={parameter.name ?? 'parameter'}\n type={[schemaToType(parameter.schema), parameter.required ? 'required' : undefined].filter(Boolean).join(', ') || undefined}\n >\n {parameter.description ?? `${parameter.in ?? 'Operation'} parameter.`}\n </Property>\n ))}\n </Properties>\n </div>\n )\n}\n\nfunction ResponseList(arg0: { operation: OpenAPIOperation }): ReactNode { const { operation } = arg0\n\n const responses = getResponseEntries(operation)\n if (responses.length === 0) return null\n\n return (\n <div>\n <h3>Responses</h3>\n <Properties>\n {responses.map(({ status, response }) => {\n const content = getJsonLikeContent(response.content)\n const type = schemaToType(content?.value.schema)\n\n return (\n <Property key={status} name={status} type={type}>\n {response.description ?? 'Response.'}\n </Property>\n )\n })}\n </Properties>\n </div>\n )\n}\n\nfunction codeLanguageForMediaType(mediaType?: string): string {\n if (!mediaType) return 'json'\n if (mediaType.includes('json')) return 'json'\n if (mediaType.includes('yaml') || mediaType.includes('yml')) return 'yaml'\n if (mediaType.startsWith('text/')) return 'text'\n if (mediaType.includes('xml')) return 'xml'\n return 'text'\n}\n\nfunction SelectControl(arg0: {\n label: string\n value: string\n options: string[]\n onChange: (value: string) => void\n}): ReactNode { const {\n label,\n value,\n options,\n onChange,\n} = arg0\n\n if (options.length <= 1) return null\n\n return (\n <Listbox value={value} onChange={onChange}>\n <div className=\"clarify-api-select relative flex flex-col gap-1 text-[0.625rem]/5 font-semibold tracking-widest text-zinc-400 uppercase\">\n <ListboxButton className=\"clarify-api-select-button flex min-w-32 items-center justify-between gap-2 rounded-lg border border-white/10 bg-zinc-900 px-2.5 py-1.5 font-mono text-xs font-medium tracking-normal text-zinc-100 outline-hidden transition hover:border-white/20 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 data-open:border-emerald-400 data-open:ring-2 data-open:ring-emerald-400/20\">\n <span className=\"flex flex-col items-start gap-0.5 truncate\">\n <span className=\"font-sans text-[0.625rem]/4 font-semibold tracking-widest text-zinc-500 uppercase\">{label}</span>\n <span className=\"truncate\">{value}</span>\n </span>\n <ChevronsUpDownIcon className=\"h-3.5 w-3.5 shrink-0 text-zinc-500\" aria-hidden=\"true\" />\n </ListboxButton>\n <ListboxOptions\n anchor=\"bottom start\"\n className=\"clarify-api-select-options z-30 mt-1 max-h-64 w-(--button-width) min-w-40 overflow-auto rounded-xl border border-white/10 bg-zinc-900 p-1 text-xs shadow-lg shadow-black/20 [--anchor-gap:--spacing(1)] focus:outline-none\"\n >\n {options.map((option) => (\n <ListboxOption\n key={option}\n value={option}\n className=\"clarify-api-select-option group flex cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 font-mono text-xs text-zinc-300 select-none data-focus:bg-white/10 data-focus:text-white data-selected:text-emerald-300\"\n >\n <span className=\"truncate\">{option}</span>\n <CheckIcon className=\"h-3.5 w-3.5 shrink-0 opacity-0 group-data-selected:opacity-100\" aria-hidden=\"true\" />\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n )\n}\n\nfunction ExamplePicker(arg0: {\n examples: ExampleEntry[]\n selectedKey: string\n onSelect: (key: string) => void\n}): ReactNode { const {\n examples,\n selectedKey,\n onSelect,\n} = arg0\n\n const scrollerRef = useRef<HTMLDivElement | null>(null)\n\n if (examples.length <= 1) return null\n\n function scrollBy(direction: 1 | -1) {\n const el = scrollerRef.current\n if (!el) return\n el.scrollBy({ left: direction * Math.max(120, el.clientWidth * 0.6), behavior: 'smooth' })\n }\n\n return (\n <div className=\"relative -mr-1 flex min-w-0 flex-1 items-center gap-1\">\n <button\n type=\"button\"\n aria-label=\"Scroll examples left\"\n onClick={() => scrollBy(-1)}\n className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-zinc-500 transition hover:bg-white/5 hover:text-zinc-200\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"h-3 w-3\">\n <path fillRule=\"evenodd\" d=\"M12.79 5.23a.75.75 0 010 1.06L9.06 10l3.73 3.71a.75.75 0 11-1.06 1.06l-4.25-4.24a.75.75 0 010-1.06l4.25-4.24a.75.75 0 011.06 0z\" clipRule=\"evenodd\" />\n </svg>\n </button>\n <div\n ref={scrollerRef}\n className=\"flex min-w-0 flex-1 items-center gap-1.5 overflow-x-auto whitespace-nowrap scroll-smooth scrollbar-none [&amp;::-webkit-scrollbar]:hidden\"\n >\n {examples.map((example) => (\n <button\n key={example.key}\n type=\"button\"\n onClick={() => onSelect(example.key)}\n title={example.summary}\n className={[\n 'shrink-0 rounded-md px-2 py-0.5 text-xs font-medium transition',\n example.key === selectedKey\n ? 'bg-white/10 text-white'\n : 'text-zinc-400 hover:bg-white/5 hover:text-zinc-200',\n ].join(' ')}\n >\n {example.title}\n </button>\n ))}\n </div>\n <button\n type=\"button\"\n aria-label=\"Scroll examples right\"\n onClick={() => scrollBy(1)}\n className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-zinc-500 transition hover:bg-white/5 hover:text-zinc-200\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"h-3 w-3\">\n <path fillRule=\"evenodd\" d=\"M7.21 14.77a.75.75 0 010-1.06L10.94 10 7.21 6.29a.75.75 0 111.06-1.06l4.25 4.24a.75.75 0 010 1.06l-4.25 4.24a.75.75 0 01-1.06 0z\" clipRule=\"evenodd\" />\n </svg>\n </button>\n </div>\n )\n}\n\nfunction CopyCodeButton(arg0: { code: string }): ReactNode { const { code } = arg0\n\n const [copied, setCopied] = useState(false)\n\n return (\n <button\n type=\"button\"\n onClick={() => {\n void window.navigator.clipboard.writeText(code).then(() => {\n setCopied(true)\n window.setTimeout(() => setCopied(false), 1000)\n })\n }}\n className=\"absolute top-3.5 right-4 rounded-full bg-white/5 px-3 py-1 text-2xs font-medium text-zinc-400 opacity-0 transition hover:bg-white/10 hover:text-zinc-200 group-hover:opacity-100 focus:opacity-100\"\n >\n {copied ? 'Copied!' : 'Copy'}\n </button>\n )\n}\n\nfunction ApiExampleCodeGroup(arg0: {\n title: string\n tag?: string\n label?: string\n code: string\n language: string\n examples?: ExampleEntry[]\n selectedExampleKey?: string\n onSelectExample?: (key: string) => void\n}): ReactNode { const {\n title,\n tag,\n label,\n code,\n language,\n examples,\n selectedExampleKey,\n onSelectExample,\n} = arg0\n\n return (\n <div className=\"clarify-api-example my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md dark:ring-1 dark:ring-white/10\">\n <div className=\"not-prose\">\n <div className=\"clarify-api-example-header flex min-h-[calc(--spacing(12)+1px)] flex-wrap items-center gap-x-4 border-b border-zinc-700 bg-zinc-800 px-4 dark:border-zinc-800 dark:bg-transparent\">\n <h3 className=\"shrink-0 py-3 text-xs font-semibold text-white\">{title}</h3>\n {examples && examples.length > 1 && selectedExampleKey && onSelectExample ? (\n <ExamplePicker examples={examples} selectedKey={selectedExampleKey} onSelect={onSelectExample} />\n ) : null}\n </div>\n {tag || label ? (\n <div className=\"flex h-9 items-center gap-2 border-y border-t-transparent border-b-white/7.5 bg-zinc-900 px-4 dark:border-b-white/5 dark:bg-white/1\">\n {tag ? <span className=\"font-mono text-[0.625rem]/6 font-semibold text-emerald-400\">{tag}</span> : null}\n {tag && label ? <span className=\"h-0.5 w-0.5 rounded-full bg-zinc-500\" /> : null}\n {label ? <span className=\"font-mono text-xs text-zinc-400\">{label}</span> : null}\n </div>\n ) : null}\n <div className=\"clarify-api-example-code group relative\">\n <pre className=\"overflow-x-auto p-4 text-xs text-white\">\n <code className={`language-${language}`}>{code}</code>\n </pre>\n <CopyCodeButton code={code} />\n </div>\n </div>\n </div>\n )\n}\n\nfunction RequestExamplesPanel(arg0: {\n spec: OpenAPISpec\n path: string\n method: string\n parameters: OpenApiParameter[]\n requestContents: MediaTypeEntry[]\n}): ReactNode { const {\n spec,\n path,\n method,\n parameters,\n requestContents,\n} = arg0\n\n const [selectedMediaType, setSelectedMediaType] = useState(requestContents[0]?.mediaType ?? '')\n const selectedContent = requestContents.find((content) => content.mediaType === selectedMediaType) ?? requestContents[0]\n const examples = getExampleEntries(selectedContent?.value)\n const [selectedExampleKey, setSelectedExampleKey] = useState(examples[0]?.key ?? '')\n const selectedExample = examples.find((example) => example.key === selectedExampleKey) ?? examples[0]\n const requestContent = selectedContent ? { ...selectedContent, value: { ...selectedContent.value, example: selectedExample?.value, examples: undefined } } : undefined\n const curl = buildCurlExample({ spec, path, method, parameters, requestContent })\n\n return (\n <div>\n <div className=\"mb-3 flex flex-wrap gap-3\">\n <SelectControl\n label=\"Media type\"\n value={selectedContent?.mediaType ?? ''}\n options={requestContents.map((content) => content.mediaType)}\n onChange={(value) => {\n setSelectedMediaType(value)\n setSelectedExampleKey(getExampleEntries(requestContents.find((content) => content.mediaType === value)?.value)[0]?.key ?? '')\n }}\n />\n </div>\n <ApiExampleCodeGroup\n title=\"Request\"\n tag={method}\n label={path}\n code={curl}\n language=\"bash\"\n examples={examples}\n selectedExampleKey={selectedExample?.key}\n onSelectExample={setSelectedExampleKey}\n />\n </div>\n )\n}\n\nfunction ResponseExamplesPanel(arg0: { operation: OpenAPIOperation }): ReactNode { const { operation } = arg0\n\n const responses = getResponseEntries(operation).filter(({ response }) => getMediaTypeEntries(response.content).length > 0)\n const [selectedStatus, setSelectedStatus] = useState(responses.find(({ status }) => status.startsWith('2'))?.status ?? responses[0]?.status ?? '')\n const selectedResponse = responses.find(({ status }) => status === selectedStatus) ?? responses[0]\n const responseContents = getMediaTypeEntries(selectedResponse?.response.content)\n const [selectedMediaType, setSelectedMediaType] = useState(responseContents[0]?.mediaType ?? '')\n const selectedContent = responseContents.find((content) => content.mediaType === selectedMediaType) ?? responseContents[0]\n const examples = getExampleEntries(selectedContent?.value)\n const [selectedExampleKey, setSelectedExampleKey] = useState(examples[0]?.key ?? '')\n const selectedExample = examples.find((example) => example.key === selectedExampleKey) ?? examples[0]\n const responseCode = stringifyExample(selectedExample?.value)\n\n if (!selectedResponse || !selectedContent || !responseCode) return null\n\n return (\n <div>\n <div className=\"mb-3 flex flex-wrap gap-3\">\n <SelectControl\n label=\"Status\"\n value={selectedResponse.status}\n options={responses.map(({ status }) => status)}\n onChange={(value) => {\n const nextResponse = responses.find(({ status }) => status === value)\n const nextContents = getMediaTypeEntries(nextResponse?.response.content)\n setSelectedStatus(value)\n setSelectedMediaType(nextContents[0]?.mediaType ?? '')\n setSelectedExampleKey(getExampleEntries(nextContents[0]?.value)[0]?.key ?? '')\n }}\n />\n <SelectControl\n label=\"Media type\"\n value={selectedContent.mediaType}\n options={responseContents.map((content) => content.mediaType)}\n onChange={(value) => {\n setSelectedMediaType(value)\n setSelectedExampleKey(getExampleEntries(responseContents.find((content) => content.mediaType === value)?.value)[0]?.key ?? '')\n }}\n />\n </div>\n <ApiExampleCodeGroup\n title=\"Response\"\n tag={selectedResponse.status}\n label={selectedContent.mediaType}\n code={responseCode}\n language={codeLanguageForMediaType(selectedContent.mediaType)}\n examples={examples}\n selectedExampleKey={selectedExample?.key}\n onSelectExample={setSelectedExampleKey}\n />\n </div>\n )\n}\n\nfunction EndpointExamples(arg0: {\n spec: OpenAPISpec\n path: string\n method: string\n operation: OpenAPIOperation\n parameters: OpenApiParameter[]\n requestContents: MediaTypeEntry[]\n}): ReactNode { const {\n spec,\n path,\n method,\n operation,\n parameters,\n requestContents,\n} = arg0\n\n return (\n <div className=\"space-y-6\">\n <RequestExamplesPanel spec={spec} path={path} method={method} parameters={parameters} requestContents={requestContents} />\n <ResponseExamplesPanel operation={operation} />\n </div>\n )\n}\n\nfunction OpenApiHeader(arg0: { spec: OpenAPISpec }): ReactNode { const { spec } = arg0\n\n return (\n <header className=\"mb-16\">\n <p className=\"mb-3 font-mono text-xs/6 font-medium tracking-widest text-emerald-500 uppercase dark:text-emerald-400\">\n OpenAPI Reference\n </p>\n <h1>{spec.info?.title ?? 'API Documentation'}</h1>\n {spec.info?.description ? <p className=\"lead\">{spec.info.description}</p> : null}\n {spec.info?.version ? <p className=\"text-sm text-zinc-500 dark:text-zinc-400\">Version {spec.info.version}</p> : null}\n </header>\n )\n}\n\nfunction OpenApiOperation(arg0: { spec: OpenAPISpec; path: string; method: string; operation: OpenAPIOperation }): ReactNode { const { spec, path, method, operation } = arg0\n\n const id = slug(`${method.toLowerCase()} ${path}`)\n const summary = operation.summary ?? `${method} ${path}`\n const description = operation.description\n const parameters = getOperationParameters(spec, path, operation)\n const requestBody = getRequestBody(operation)\n const requestContents = getMediaTypeEntries(requestBody?.content)\n const requestSchema = requestContents[0]?.value.schema\n const groupedParameters = {\n path: parameters.filter((parameter) => parameter.in === 'path'),\n query: parameters.filter((parameter) => parameter.in === 'query'),\n header: parameters.filter((parameter) => parameter.in === 'header'),\n }\n\n return (\n <section className=\"clarify-api-endpoint scroll-mt-24\" aria-labelledby={id}>\n <Heading id={id} tag={method} label={path}>\n {summary}\n </Heading>\n <Row>\n <Col>\n {description ? <p>{description}</p> : null}\n <ParameterList title=\"Path parameters\" parameters={groupedParameters.path} />\n <ParameterList title=\"Query parameters\" parameters={groupedParameters.query} />\n <ParameterList title=\"Headers\" parameters={groupedParameters.header} />\n {requestBody && requestContents.length > 0 ? (\n <>\n <h3>Request body</h3>\n {typeof requestBody.description === 'string' ? <p>{requestBody.description}</p> : null}\n <SchemaProperties title=\"Body properties\" schema={requestSchema} />\n </>\n ) : null}\n <ResponseList operation={operation} />\n </Col>\n <Col sticky>\n <EndpointExamples\n spec={spec}\n path={path}\n method={method}\n operation={operation}\n parameters={parameters}\n requestContents={requestContents}\n />\n </Col>\n </Row>\n </section>\n )\n}\n\nfunction OpenApiPaths(arg0: { spec: OpenAPISpec }): ReactNode { const { spec } = arg0\n\n const entries = listOpenApiOperations(spec).map(({ path, method, operation }) => ({\n path,\n method: method.toUpperCase(),\n operation,\n }))\n\n return (\n <div className=\"clarify-api-endpoints space-y-16\">\n {entries.map(({ path, method, operation }) => (\n <OpenApiOperation key={`${method}-${path}`} spec={spec} path={path} method={method} operation={operation} />\n ))}\n </div>\n )\n}\n\nfunction resolveRelativePath(fromDir: string, to: string): string {\n const parts = (fromDir + '/' + to).split('/').filter(Boolean)\n const stack: string[] = []\n for (const part of parts) {\n if (part === '..') {\n stack.pop()\n } else if (part !== '.') {\n stack.push(part)\n }\n }\n return stack.join('/')\n}\n\nfunction normalizeSpecPath(specPath: string, currentRoutePath?: string, routePrefix = ''): string {\n if (specPath.startsWith(VIRTUAL_PREFIX)) return specPath\n\n const normalizedRoutePrefix = routePrefix.replace(/^\\/+|\\/+$/g, '')\n const normalizedSpecPath = specPath.startsWith('/') && normalizedRoutePrefix && specPath.slice(1).startsWith(`${normalizedRoutePrefix}/`)\n ? '/' + specPath.slice(normalizedRoutePrefix.length + 2)\n : specPath\n\n if (normalizedSpecPath.startsWith('/')) {\n return VIRTUAL_PREFIX + normalizedSpecPath.replace(/^\\//, '')\n }\n const fromDir = currentRoutePath === '/' ? '' : currentRoutePath?.replace(/^\\//, '').replace(/\\/[^/]*$/, '') ?? ''\n const normalizedFromDir = normalizedRoutePrefix && fromDir.startsWith(`${normalizedRoutePrefix}/`)\n ? fromDir.slice(normalizedRoutePrefix.length + 1)\n : fromDir\n return VIRTUAL_PREFIX + resolveRelativePath(normalizedFromDir, normalizedSpecPath)\n}\n\nfunction useOpenApiSpec(spec?: OpenAPISpec, specPath?: string): OpenAPISpec | null {\n const specs = useOpenApis()\n const location = useLocation()\n const config = useClarifyConfig()\n\n if (spec) return spec\n if (!specPath) return null\n\n const normalized = normalizeSpecPath(specPath, location.pathname, config.routePrefix)\n return specs[normalized] ?? null\n}\n\nfunction WarningBox(arg0: { children: ReactNode; tone?: 'amber' | 'red' }): ReactNode { const { children, tone = 'amber' } = arg0\n\n const classes = tone === 'red'\n ? 'rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200'\n : 'rounded-lg border border-amber-200 bg-amber-50 p-4 text-sm text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200'\n\n return <div className={clsx('clarify-warning', classes)}>{children}</div>\n}\n\nexport function OpenApiPage(arg0: OpenApiPageProps): ReactNode {\n const { spec, specPath } = arg0\n const resolved = useOpenApiSpec(spec, specPath)\n\n if (!resolved) {\n return <WarningBox>OpenAPI spec not found: {specPath ?? '(未提供 spec 或 specPath)'}</WarningBox>\n }\n\n return (\n <article className=\"clarify-openapi-page flex h-full flex-col pt-16 pb-10\">\n <Prose className=\"flex-auto\">\n <OpenApiHeader spec={resolved} />\n <OpenApiPaths spec={resolved} />\n </Prose>\n <PageFooter />\n </article>\n )\n}\n\nexport function ApiEndpoint(arg0: ApiEndpointProps): ReactNode {\n const { spec, path, method } = arg0\n const op = getOpenApiOperation(spec, path, method)\n\n if (!op) {\n return <WarningBox tone=\"red\">Endpoint not found: {method.toUpperCase()} {path}</WarningBox>\n }\n\n return <OpenApiOperation spec={spec} path={path} method={method.toUpperCase()} operation={op} />\n}\n\nexport function OpenApiEndpoint(arg0: OpenApiEndpointProps): ReactNode {\n const { specPath, path, method } = arg0\n const spec = useOpenApiSpec(undefined, specPath)\n\n if (!spec) {\n return <WarningBox>OpenAPI spec not found: {specPath}</WarningBox>\n }\n\n return <ApiEndpoint spec={spec} path={path} method={method} />\n}\n","import { ApiEndpointCard, DocShell } from '../components'\nimport { OpenApiPage, ApiEndpoint, OpenApiEndpoint } from '../openapi'\n\nimport * as mdxPrimitives from './primitives'\n\nexport function useMDXComponents(components: Record<string, unknown> = {}) {\n return {\n ...components,\n ...mdxPrimitives,\n OpenApiPage,\n ApiEndpoint,\n OpenApiEndpoint,\n ApiEndpointCard,\n DocShell,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,SAAgB,QAAQ,MAA+B;CAAG,MAAM,EAAE,aAAa;CAE7E,OACE,qBAAC,WAAD;EAAS,WAAU;YAAnB,CACE,oBAAC,OAAD;GAAO,WAAU;GAAa;EAAgB,CAAA,GAC9C,oBAAC,YAAD,CAAa,CAAA,CACN;;AAEb;AAEA,SAAgB,EAAE,MAAqC;CAAG,MAAM,EAAE,OAAO,IAAI,GAAG,UAAU;CAExF,IAAI,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,IAAI,GAC/C,OAAO,oBAAC,MAAD;EAAM,IAAI;EAAM,GAAI;CAAQ,CAAA;CAGrC,OAAO,oBAAC,KAAD;EAAS;EAAM,GAAI;CAAQ,CAAA;AACpC;AAEA,IAAa,OAAO;AACpB,IAAa,MAAM;AAGnB,SAAgB,GAAG,OAAgE;CACjF,OAAO,cAAc,SAAS;EAAE,OAAO;EAAG,GAAG;CAAM,CAAC;AACtD;AAEA,SAAgB,GAAG,OAAgE;CACjF,OAAO,cAAc,SAAS;EAAE,OAAO;EAAG,GAAG;CAAM,CAAC;AACtD;AAEA,SAAS,SAAS,OAAwC;CACxD,OACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,eAAY;EAAO,GAAI;YAAhD;GACE,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAI,GAAE;IAAI,aAAY;GAAK,CAAA;GAC7C,oBAAC,QAAD;IAAM,MAAK;IAAO,eAAc;IAAQ,gBAAe;IAAQ,aAAY;IAAM,GAAE;GAAsB,CAAA;GACzG,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAI,GAAE;IAAK,MAAK;GAAQ,CAAA;EACvC;;AAET;AAEA,SAAgB,KAAK,MAA+B;CAAG,MAAM,EAAE,aAAa;CAE1E,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,UAAD,EAAU,WAAU,wGAAyG,CAAA,GAC7H,oBAAC,OAAD;GAAK,WAAU;GAA4B;EAAc,CAAA,CACtD;;AAET;AAEA,SAAgB,IAAI,MAA+B;CAAG,MAAM,EAAE,aAAa;CAEzE,OAAO,oBAAC,OAAD;EAAK,WAAU;EAA2F;CAAc,CAAA;AACjI;AAEA,SAAgB,IAAI,MAAiD;CAAG,MAAM,EAAE,UAAU,SAAS,UAAU;CAE3G,OAAO,oBAAC,OAAD;EAAK,WAAW,KAAK,wCAAwC,UAAU,qBAAqB;EAAI;CAAc,CAAA;AACvH;AAEA,SAAgB,WAAW,MAA+B;CAAG,MAAM,EAAE,aAAa;CAEhF,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,MAAD;GACE,MAAK;GACL,WAAU;GAET;EACC,CAAA;CACD,CAAA;AAET;AAEA,SAAgB,SAAS,MAA4D;CAAG,MAAM,EAAE,MAAM,UAAU,SAAS;CAEvH,OACE,oBAAC,MAAD;EAAI,WAAU;YACZ,qBAAC,MAAD;GAAI,WAAU;aAAd;IACE,oBAAC,MAAD;KAAI,WAAU;eAAU;IAAQ,CAAA;IAChC,oBAAC,MAAD,EAAA,UACE,oBAAC,QAAD,EAAA,UAAO,KAAW,CAAA,EAChB,CAAA;IACH,OACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,MAAD;KAAI,WAAU;eAAU;IAAQ,CAAA,GAChC,oBAAC,MAAD;KAAI,WAAU;eAAsD;IAAS,CAAA,CAC7E,EAAA,CAAA,IACA;IACJ,oBAAC,MAAD;KAAI,WAAU;eAAU;IAAe,CAAA;IACvC,oBAAC,MAAD;KAAI,WAAU;KAA6C;IAAa,CAAA;GACtE;;CACF,CAAA;AAER;;;ACjGA,IAAa,uBAAuB;CAAC;CAAO;CAAO;CAAQ;CAAU;CAAW;CAAQ;CAAS;AAAO;AAIxG,SAAgB,oBAAoB,QAA6C;CAC/E,OAAQ,qBAA2C,SAAS,OAAO,YAAY,CAAC;AAClF;AAEA,SAAgB,oBAAoB,MAAmB,MAAc,QAA8C;CACjH,IAAI,CAAC,oBAAoB,MAAM,GAAG,OAAO,KAAA;CACzC,OAAO,KAAK,QAAQ,QAAQ,OAAO,YAAY;AACjD;AAEA,SAAgB,sBAAsB,MAAoG;CACxI,MAAM,QAAQ,KAAK,SAAS,CAAC;CAC7B,MAAM,aAA8F,CAAC;CAErG,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,KAAK,GAAG;EACpD,IAAI,CAAC,UAAU;EACf,KAAK,MAAM,UAAU,sBAAsB;GACzC,MAAM,YAAY,SAAS;GAC3B,IAAI,WAAW,WAAW,KAAK;IAAE;IAAM;IAAQ;GAAU,CAAC;EAC5D;CACF;CAEA,OAAO;AACT;;;ACoCA,IAAM,iBAAiB;AAEvB,SAAS,SAAS,OAAwC;CACxD,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,YAAY,OAA2C;CAC9D,OAAO,SAAS,KAAK,KAAK,OAAO,MAAM,SAAS;AAClD;AAEA,SAAS,qBAAqB,KAAqB;CACjD,OAAO,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,GAAG,EAAE,KAAK;AAClD;AAEA,SAAS,YAAY,MAAmB,MAAyC;CAC/E,MAAM,WAAW,KAAK,QAAQ;CAC9B,OAAO,SAAS,QAAQ,IAAI,WAAW,KAAA;AACzC;AAEA,SAAS,uBAAuB,MAAmB,MAAc,WAAiD;CAChH,MAAM,iBAAiB,YAAY,MAAM,IAAI,GAAG;CAChD,MAAM,sBAAuB,UAA4B;CAEzD,OAAO,CAAC,GAAI,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,GAAI,GAAI,MAAM,QAAQ,mBAAmB,IAAI,sBAAsB,CAAC,CAAE,EACjI,QAAQ,cAA6C,SAAS,SAAS,KAAK,CAAC,YAAY,SAAS,CAAC;AACxG;AAEA,SAAS,eAAe,WAAwD;CAC9E,MAAM,cAAe,UAA4B;CACjD,OAAO,SAAS,WAAW,KAAK,CAAC,YAAY,WAAW,IAAI,cAAc,KAAA;AAC5E;AAEA,SAAS,oBAAoB,SAAoC;CAC/D,IAAI,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC;CAEhC,OAAO,OAAO,QAAQ,OAAO,EAC1B,QAAQ,GAAG,WAAW,SAAS,KAAK,KAAK,CAAC,YAAY,KAAK,CAAC,EAC5D,KAAK,CAAC,WAAW,YAAY;EAAE;EAAkB;CAA0B,EAAE,EAC7E,MAAM,GAAG,MAAM;EAGd,QAFc,EAAE,UAAU,SAAS,MAAM,IAAI,IAAI,MACnC,EAAE,UAAU,SAAS,MAAM,IAAI,IAAI;CAEnD,CAAC;AACL;AAEA,SAAS,mBAAmB,SAA8C;CACxE,OAAO,oBAAoB,OAAO,EAAE;AACtC;AAEA,SAAS,gBAAgB,SAA2B;CAClD,IAAI,SAAS,OAAO,KAAK,WAAW,SAAS,OAAO,QAAQ;CAC5D,IAAI,SAAS,OAAO,KAAK,mBAAmB,SAAS,OAAO,KAAA;CAC5D,OAAO;AACT;AAEA,SAAS,gBAAgB,KAAa,SAAuD;CAC3F,IAAI,SAAS,OAAO,GAAG;EACrB,MAAM,UAAU,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU,KAAA;EACxE,OAAO;GAAE,OAAO,WAAW;GAAK;EAAQ;CAC1C;CAEA,OAAO,EAAE,OAAO,IAAI;AACtB;AAEA,SAAS,kBAAkB,WAA8C;CACvE,IAAI,CAAC,WAAW,OAAO,CAAC;CAExB,IAAI,SAAS,UAAU,QAAQ,GAAG;EAChC,MAAM,WAA2B,CAAC;EAElC,KAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,UAAU,QAAQ,GAAG;GAC/D,MAAM,QAAQ,gBAAgB,OAAO;GACrC,IAAI,OAAO,UAAU,aAAa;GAElC,MAAM,EAAE,OAAO,YAAY,gBAAgB,KAAK,OAAO;GACvD,SAAS,KAAK;IAAE;IAAK;IAAO;IAAS;GAAM,CAAC;EAC9C;EAEA,IAAI,SAAS,SAAS,GAAG,OAAO;CAClC;CAEA,IAAI,OAAO,UAAU,YAAY,aAC/B,OAAO,CAAC;EAAE,KAAK;EAAW,OAAO;EAAW,OAAO,UAAU;CAAQ,CAAC;CAGxE,MAAM,YAAY,gBAAgB,UAAU,MAAM;CAClD,OAAO,OAAO,cAAc,cAAc,CAAC,IAAI,CAAC;EAAE,KAAK;EAAU,OAAO;EAAkB,OAAO;EAAW,WAAW;CAAK,CAAC;AAC/H;AAEA,SAAS,kBAAkB,WAAuC;CAChE,OAAO,kBAAkB,SAAS,EAAE,IAAI;AAC1C;AAEA,SAAS,aAAa,QAAqC;CACzD,IAAI,CAAC,SAAS,MAAM,GAAG,OAAO,KAAA;CAC9B,IAAI,YAAY,MAAM,GAAG,OAAO,qBAAqB,OAAO,IAAI;CAChE,IAAI,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,OAAO,KAAK,IAAI,MAAM,EAAE,KAAK,KAAK;CAEzE,MAAM,QAAQ,OAAO,SAAS,OAAO;CACrC,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,IAAI,YAAY,EAAE,OAAO,OAAO,EAAE,KAAK,KAAK;CAG3D,IAAI,OAAO,SAAS,SAClB,OAAO,GAAG,aAAa,OAAO,KAAK,KAAK,UAAU;CAGpD,OAAO,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO,KAAA;AACzD;AAEA,SAAS,gBAAgB,QAAiB,QAAQ,GAAY;CAC5D,IAAI,CAAC,SAAS,MAAM,KAAK,QAAQ,GAAG,OAAO,KAAA;CAC3C,IAAI,OAAO,OAAO,YAAY,aAAa,OAAO,OAAO;CACzD,IAAI,OAAO,OAAO,YAAY,aAAa,OAAO,OAAO;CACzD,IAAI,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,OAAO,KAAK;CACnD,IAAI,YAAY,MAAM,GAAG,OAAO,EAAE,IAAI,qBAAqB,OAAO,IAAI,EAAE;CAExE,IAAI,OAAO,SAAS,SAClB,OAAO,CAAC,gBAAgB,OAAO,OAAO,QAAQ,CAAC,KAAK,QAAQ;CAG9D,IAAI,OAAO,SAAS,YAAY,SAAS,OAAO,UAAU,GAAG;EAC3D,MAAM,aAAa,SAAS,OAAO,UAAU,IAAI,OAAO,aAAa,CAAC;EACtE,OAAO,OAAO,YACZ,OAAO,QAAQ,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,oBAAoB,CACrE,MACA,gBAAgB,gBAAgB,QAAQ,CAAC,KAAK,eAAe,aAAa,cAAc,CAAC,CAC3F,CAAC,CACH;CACF;CAEA,OAAO,eAAe,aAAa,MAAM,CAAC;AAC5C;AAEA,SAAS,eAAe,MAAwB;CAC9C,IAAI,CAAC,MAAM,OAAO;CAClB,IAAI,KAAK,SAAS,IAAI,GAAG,OAAO,CAAC;CACjC,IAAI,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,QAAQ,GAAG,OAAO;CAChE,IAAI,KAAK,SAAS,SAAS,GAAG,OAAO;CACrC,IAAI,KAAK,SAAS,QAAQ,GAAG,OAAO,CAAC;CACrC,OAAO;AACT;AAEA,SAAS,iBAAiB,OAAwB;CAChD,IAAI,OAAO,UAAU,aAAa,OAAO;CACzC,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AACtC;AAEA,SAAS,WAAW,OAAuB;CACzC,OAAO,IAAI,MAAM,QAAQ,MAAM,OAAO,EAAE;AAC1C;AAEA,SAAS,aAAa,MAA2B;CAC/C,MAAM,UAAW,KAAuB;CACxC,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG,OAAO;CAEpC,MAAM,cAAc,QAAQ,KAAK,QAAQ;CACzC,OAAO,OAAO,aAAa,QAAQ,WAAW,YAAY,MAAM;AAClE;AAEA,SAAS,kBAAkB,MAAmB,MAAc,YAAwC;CAClG,MAAM,QAAQ,WACX,QAAQ,cAAc,UAAU,OAAO,WAAW,UAAU,IAAI,EAChE,KAAK,cAAc,GAAG,UAAU,KAAK,IAAI,UAAU,KAAK,EAAE,EAC1D,KAAK,GAAG;CAEX,OAAO,GADW,aAAa,IAAI,EAAE,QAAQ,OAAO,EAC1C,IAAY,OAAO,QAAQ,IAAI,UAAU;AACrD;AAEA,SAAS,iBAAiB,MAMf;CAAG,MAAM,EAClB,MACA,MACA,QACA,YACA,mBACE;CAEF,MAAM,MAAM,kBAAkB,MAAM,MAAM,UAAU;CACpD,MAAM,QAAQ,CAAC,QAAQ,WAAW,QAAQ,QAAQ,KAAK,WAAW,GAAG,GAAG;CAExE,IAAI,WAAW,OAAO,MAAM,KAAK,QAAQ,QAAQ;CACjD,MAAM,KAAK,sCAAsC;CACjD,MAAM,KAAK,iCAAiC;CAE5C,MAAM,iBAAiB,kBAAkB,gBAAgB,KAAK;CAC9D,IAAI,kBAAkB,OAAO,mBAAmB,aAAa;EAC3D,MAAM,KAAK,uBAAuB,eAAe,UAAU,EAAE;EAC7D,MAAM,KAAK,QAAQ,WAAW,iBAAiB,cAAc,CAAC,GAAG;CACnE;CAEA,OAAO,MAAM,KAAK,OAAO;AAC3B;AAEA,SAAS,mBAAmB,WAAmF;CAC7G,MAAM,YAAa,UAA4B;CAC/C,IAAI,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC;CAElC,OAAO,OAAO,QAAQ,SAAS,EAC5B,QAAQ,GAAG,cAAc,SAAS,QAAQ,KAAK,CAAC,YAAY,QAAQ,CAAC,EACrE,KAAK,CAAC,QAAQ,eAAe;EAAE;EAAkB;CAA4B,EAAE;AACpF;AAEA,SAAS,iBAAiB,MAAqD;CAAG,MAAM,EAAE,OAAO,WAAW;CAE1G,MAAM,eAAe,YAAY,MAAM,IAAI,KAAA,IAAY;CACvD,MAAM,aAAa,SAAS,YAAY,KAAK,SAAS,aAAa,UAAU,IAAI,aAAa,aAAa,KAAA;CAC3G,MAAM,WAAW,SAAS,YAAY,KAAK,MAAM,QAAQ,aAAa,QAAQ,IAAI,aAAa,SAAS,IAAI,MAAM,IAAI,CAAC;CAEvH,IAAI,CAAC,cAAc,OAAO,KAAK,UAAU,EAAE,WAAW,GAAG,OAAO;CAEhE,OACE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,MAAD,EAAA,UAAK,MAAU,CAAA,GACf,oBAAC,YAAD,EAAA,UACG,OAAO,QAAQ,UAAU,EAAE,KAAK,CAAC,MAAM,oBAAoB;EAC1D,MAAM,WAAW,SAAS,cAAc,IAAI,iBAAiB,CAAC;EAC9D,MAAM,OAAO,aAAa,cAAc;EACxC,MAAM,cAAc,OAAO,SAAS,gBAAgB,WAAW,SAAS,cAAc,KAAA;EACtF,MAAM,aAAa,SAAS,SAAS,IAAI;EAEzC,OACE,oBAAC,UAAD;GAA2B;GAAM,MAAM,cAAc,OAAO,GAAG,KAAK,cAAc;aAC/E,gBAAgB,aAAa,cAAc;EACpC,GAFK,IAEL;CAEd,CAAC,EACS,CAAA,CACT,EAAA,CAAA;AAET;AAEA,SAAS,cAAc,MAAoE;CAAG,MAAM,EAAE,OAAO,eAAe;CAE1H,IAAI,WAAW,WAAW,GAAG,OAAO;CAEpC,OACE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,MAAD,EAAA,UAAK,MAAU,CAAA,GACf,oBAAC,YAAD,EAAA,UACG,WAAW,KAAK,cACf,oBAAC,UAAD;EAEE,MAAM,UAAU,QAAQ;EACxB,MAAM,CAAC,aAAa,UAAU,MAAM,GAAG,UAAU,WAAW,aAAa,KAAA,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,KAAK,KAAA;YAEjH,UAAU,eAAe,GAAG,UAAU,MAAM,YAAY;CACjD,GALH,GAAG,UAAU,GAAG,GAAG,UAAU,MAK1B,CACX,EACS,CAAA,CACT,EAAA,CAAA;AAET;AAEA,SAAS,aAAa,MAAkD;CAAG,MAAM,EAAE,cAAc;CAE/F,MAAM,YAAY,mBAAmB,SAAS;CAC9C,IAAI,UAAU,WAAW,GAAG,OAAO;CAEnC,OACE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,MAAD,EAAA,UAAI,YAAa,CAAA,GACjB,oBAAC,YAAD,EAAA,UACG,UAAU,KAAK,EAAE,QAAQ,eAAe;EAIvC,OACE,oBAAC,UAAD;GAAuB,MAAM;GAAc,MAHhC,aADG,mBAAmB,SAAS,OAClB,GAAS,MAAM,MAGI;aACxC,SAAS,eAAe;EACjB,GAFK,MAEL;CAEd,CAAC,EACS,CAAA,CACT,EAAA,CAAA;AAET;AAEA,SAAS,yBAAyB,WAA4B;CAC5D,IAAI,CAAC,WAAW,OAAO;CACvB,IAAI,UAAU,SAAS,MAAM,GAAG,OAAO;CACvC,IAAI,UAAU,SAAS,MAAM,KAAK,UAAU,SAAS,KAAK,GAAG,OAAO;CACpE,IAAI,UAAU,WAAW,OAAO,GAAG,OAAO;CAC1C,IAAI,UAAU,SAAS,KAAK,GAAG,OAAO;CACtC,OAAO;AACT;AAEA,SAAS,cAAc,MAKT;CAAG,MAAM,EACrB,OACA,OACA,SACA,aACE;CAEF,IAAI,QAAQ,UAAU,GAAG,OAAO;CAEhC,OACE,oBAAC,SAAD;EAAgB;EAAiB;YAC/B,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,qBAAC,eAAD;IAAe,WAAU;cAAzB,CACE,qBAAC,QAAD;KAAM,WAAU;eAAhB,CACE,oBAAC,QAAD;MAAM,WAAU;gBAAqF;KAAY,CAAA,GACjH,oBAAC,QAAD;MAAM,WAAU;gBAAY;KAAY,CAAA,CACpC;QACN,oBAAC,oBAAD;KAAoB,WAAU;KAAqC,eAAY;IAAQ,CAAA,CAC1E;OACf,oBAAC,gBAAD;IACE,QAAO;IACP,WAAU;cAET,QAAQ,KAAK,WACZ,qBAAC,eAAD;KAEE,OAAO;KACP,WAAU;eAHZ,CAKE,oBAAC,QAAD;MAAM,WAAU;gBAAY;KAAa,CAAA,GACzC,oBAAC,WAAD;MAAW,WAAU;MAAiE,eAAY;KAAQ,CAAA,CAC7F;OANR,MAMQ,CAChB;GACa,CAAA,CACb;;CACE,CAAA;AAEb;AAEA,SAAS,cAAc,MAIT;CAAG,MAAM,EACrB,UACA,aACA,aACE;CAEF,MAAM,cAAc,OAA8B,IAAI;CAEtD,IAAI,SAAS,UAAU,GAAG,OAAO;CAEjC,SAAS,SAAS,WAAmB;EACnC,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,SAAS;GAAE,MAAM,YAAY,KAAK,IAAI,KAAK,GAAG,cAAc,EAAG;GAAG,UAAU;EAAS,CAAC;CAC3F;CAEA,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf;GACE,oBAAC,UAAD;IACE,MAAK;IACL,cAAW;IACX,eAAe,SAAS,EAAE;IAC1B,WAAU;cAEV,oBAAC,OAAD;KAAK,SAAQ;KAAY,MAAK;KAAe,WAAU;eACrD,oBAAC,QAAD;MAAM,UAAS;MAAU,GAAE;MAAkI,UAAS;KAAW,CAAA;IAC9K,CAAA;GACC,CAAA;GACR,oBAAC,OAAD;IACE,KAAK;IACL,WAAU;cAET,SAAS,KAAK,YACb,oBAAC,UAAD;KAEE,MAAK;KACL,eAAe,SAAS,QAAQ,GAAG;KACnC,OAAO,QAAQ;KACf,WAAW,CACT,kEACA,QAAQ,QAAQ,cACZ,2BACA,oDACN,EAAE,KAAK,GAAG;eAET,QAAQ;IACH,GAZD,QAAQ,GAYP,CACT;GACE,CAAA;GACL,oBAAC,UAAD;IACE,MAAK;IACL,cAAW;IACX,eAAe,SAAS,CAAC;IACzB,WAAU;cAEV,oBAAC,OAAD;KAAK,SAAQ;KAAY,MAAK;KAAe,WAAU;eACrD,oBAAC,QAAD;MAAM,UAAS;MAAU,GAAE;MAAmI,UAAS;KAAW,CAAA;IAC/K,CAAA;GACC,CAAA;EACL;;AAET;AAEA,SAAS,eAAe,MAAmC;CAAG,MAAM,EAAE,SAAS;CAE7E,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAE1C,OACE,oBAAC,UAAD;EACE,MAAK;EACL,eAAe;GACb,OAAY,UAAU,UAAU,UAAU,IAAI,EAAE,WAAW;IACzD,UAAU,IAAI;IACd,OAAO,iBAAiB,UAAU,KAAK,GAAG,GAAI;GAChD,CAAC;EACH;EACA,WAAU;YAET,SAAS,YAAY;CAChB,CAAA;AAEZ;AAEA,SAAS,oBAAoB,MASf;CAAG,MAAM,EACrB,OACA,KACA,OACA,MACA,UACA,UACA,oBACA,oBACE;CAEF,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,MAAD;MAAI,WAAU;gBAAkD;KAAU,CAAA,GACzE,YAAY,SAAS,SAAS,KAAK,sBAAsB,kBACxD,oBAAC,eAAD;MAAyB;MAAU,aAAa;MAAoB,UAAU;KAAkB,CAAA,IAC9F,IACD;;IACJ,OAAO,QACN,qBAAC,OAAD;KAAK,WAAU;eAAf;MACG,MAAM,oBAAC,QAAD;OAAM,WAAU;iBAA8D;MAAU,CAAA,IAAI;MAClG,OAAO,QAAQ,oBAAC,QAAD,EAAM,WAAU,uCAAwC,CAAA,IAAI;MAC3E,QAAQ,oBAAC,QAAD;OAAM,WAAU;iBAAmC;MAAY,CAAA,IAAI;KACzE;SACH;IACJ,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,QAAD;OAAM,WAAW,YAAY;iBAAa;MAAW,CAAA;KAClD,CAAA,GACL,oBAAC,gBAAD,EAAsB,KAAO,CAAA,CAC1B;;GACF;;CACF,CAAA;AAET;AAEA,SAAS,qBAAqB,MAMhB;CAAG,MAAM,EACrB,MACA,MACA,QACA,YACA,oBACE;CAEF,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,gBAAgB,IAAI,aAAa,EAAE;CAC9F,MAAM,kBAAkB,gBAAgB,MAAM,YAAY,QAAQ,cAAc,iBAAiB,KAAK,gBAAgB;CACtH,MAAM,WAAW,kBAAkB,iBAAiB,KAAK;CACzD,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,SAAS,IAAI,OAAO,EAAE;CACnF,MAAM,kBAAkB,SAAS,MAAM,YAAY,QAAQ,QAAQ,kBAAkB,KAAK,SAAS;CAEnG,MAAM,OAAO,iBAAiB;EAAE;EAAM;EAAM;EAAQ;EAAY,gBADzC,kBAAkB;GAAE,GAAG;GAAiB,OAAO;IAAE,GAAG,gBAAgB;IAAO,SAAS,iBAAiB;IAAO,UAAU,KAAA;GAAU;EAAE,IAAI,KAAA;CAC9E,CAAC;CAEhF,OACE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,eAAD;GACE,OAAM;GACN,OAAO,iBAAiB,aAAa;GACrC,SAAS,gBAAgB,KAAK,YAAY,QAAQ,SAAS;GAC3D,WAAW,UAAU;IACnB,qBAAqB,KAAK;IAC1B,sBAAsB,kBAAkB,gBAAgB,MAAM,YAAY,QAAQ,cAAc,KAAK,GAAG,KAAK,EAAE,IAAI,OAAO,EAAE;GAC9H;EACD,CAAA;CACE,CAAA,GACL,oBAAC,qBAAD;EACE,OAAM;EACN,KAAK;EACL,OAAO;EACP,MAAM;EACN,UAAS;EACC;EACV,oBAAoB,iBAAiB;EACrC,iBAAiB;CAClB,CAAA,CACE,EAAA,CAAA;AAET;AAEA,SAAS,sBAAsB,MAAkD;CAAG,MAAM,EAAE,cAAc;CAExG,MAAM,YAAY,mBAAmB,SAAS,EAAE,QAAQ,EAAE,eAAe,oBAAoB,SAAS,OAAO,EAAE,SAAS,CAAC;CACzH,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,UAAU,MAAM,EAAE,aAAa,OAAO,WAAW,GAAG,CAAC,GAAG,UAAU,UAAU,IAAI,UAAU,EAAE;CACjJ,MAAM,mBAAmB,UAAU,MAAM,EAAE,aAAa,WAAW,cAAc,KAAK,UAAU;CAChG,MAAM,mBAAmB,oBAAoB,kBAAkB,SAAS,OAAO;CAC/E,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,iBAAiB,IAAI,aAAa,EAAE;CAC/F,MAAM,kBAAkB,iBAAiB,MAAM,YAAY,QAAQ,cAAc,iBAAiB,KAAK,iBAAiB;CACxH,MAAM,WAAW,kBAAkB,iBAAiB,KAAK;CACzD,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,SAAS,IAAI,OAAO,EAAE;CACnF,MAAM,kBAAkB,SAAS,MAAM,YAAY,QAAQ,QAAQ,kBAAkB,KAAK,SAAS;CACnG,MAAM,eAAe,iBAAiB,iBAAiB,KAAK;CAE5D,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,cAAc,OAAO;CAEnE,OACE,qBAAC,OAAD,EAAA,UAAA,CACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,eAAD;GACE,OAAM;GACN,OAAO,iBAAiB;GACxB,SAAS,UAAU,KAAK,EAAE,aAAa,MAAM;GAC7C,WAAW,UAAU;IAEnB,MAAM,eAAe,oBADA,UAAU,MAAM,EAAE,aAAa,WAAW,KACtB,GAAc,SAAS,OAAO;IACvE,kBAAkB,KAAK;IACvB,qBAAqB,aAAa,IAAI,aAAa,EAAE;IACrD,sBAAsB,kBAAkB,aAAa,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE;GAC/E;EACD,CAAA,GACD,oBAAC,eAAD;GACE,OAAM;GACN,OAAO,gBAAgB;GACvB,SAAS,iBAAiB,KAAK,YAAY,QAAQ,SAAS;GAC5D,WAAW,UAAU;IACnB,qBAAqB,KAAK;IAC1B,sBAAsB,kBAAkB,iBAAiB,MAAM,YAAY,QAAQ,cAAc,KAAK,GAAG,KAAK,EAAE,IAAI,OAAO,EAAE;GAC/H;EACD,CAAA,CACE;KACL,oBAAC,qBAAD;EACE,OAAM;EACN,KAAK,iBAAiB;EACtB,OAAO,gBAAgB;EACvB,MAAM;EACN,UAAU,yBAAyB,gBAAgB,SAAS;EAClD;EACV,oBAAoB,iBAAiB;EACrC,iBAAiB;CAClB,CAAA,CACE,EAAA,CAAA;AAET;AAEA,SAAS,iBAAiB,MAOZ;CAAG,MAAM,EACrB,MACA,MACA,QACA,WACA,YACA,oBACE;CAEF,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,sBAAD;GAA4B;GAAY;GAAc;GAAoB;GAA6B;EAAkB,CAAA,GACzH,oBAAC,uBAAD,EAAkC,UAAY,CAAA,CAC3C;;AAET;AAEA,SAAS,cAAc,MAAwC;CAAG,MAAM,EAAE,SAAS;CAEjF,OACE,qBAAC,UAAD;EAAQ,WAAU;YAAlB;GACE,oBAAC,KAAD;IAAG,WAAU;cAAwG;GAElH,CAAA;GACH,oBAAC,MAAD,EAAA,UAAK,KAAK,MAAM,SAAS,oBAAwB,CAAA;GAChD,KAAK,MAAM,cAAc,oBAAC,KAAD;IAAG,WAAU;cAAQ,KAAK,KAAK;GAAe,CAAA,IAAI;GAC3E,KAAK,MAAM,UAAU,qBAAC,KAAD;IAAG,WAAU;cAAb,CAAwD,YAAS,KAAK,KAAK,OAAW;QAAI;EAC1G;;AAEZ;AAEA,SAAS,iBAAiB,MAAmG;CAAG,MAAM,EAAE,MAAM,MAAM,QAAQ,cAAc;CAExK,MAAM,KAAK,KAAK,GAAG,OAAO,YAAY,EAAE,GAAG,MAAM;CACjD,MAAM,UAAU,UAAU,WAAW,GAAG,OAAO,GAAG;CAClD,MAAM,cAAc,UAAU;CAC9B,MAAM,aAAa,uBAAuB,MAAM,MAAM,SAAS;CAC/D,MAAM,cAAc,eAAe,SAAS;CAC5C,MAAM,kBAAkB,oBAAoB,aAAa,OAAO;CAChE,MAAM,gBAAgB,gBAAgB,IAAI,MAAM;CAChD,MAAM,oBAAoB;EACxB,MAAM,WAAW,QAAQ,cAAc,UAAU,OAAO,MAAM;EAC9D,OAAO,WAAW,QAAQ,cAAc,UAAU,OAAO,OAAO;EAChE,QAAQ,WAAW,QAAQ,cAAc,UAAU,OAAO,QAAQ;CACpE;CAEA,OACE,qBAAC,WAAD;EAAS,WAAU;EAAoC,mBAAiB;YAAxE,CACE,oBAAC,SAAD;GAAa;GAAI,KAAK;GAAQ,OAAO;aAClC;EACM,CAAA,GACT,qBAAC,KAAD,EAAA,UAAA,CACE,qBAAC,KAAD,EAAA,UAAA;GACG,cAAc,oBAAC,KAAD,EAAA,UAAI,YAAe,CAAA,IAAI;GACtC,oBAAC,eAAD;IAAe,OAAM;IAAkB,YAAY,kBAAkB;GAAO,CAAA;GAC5E,oBAAC,eAAD;IAAe,OAAM;IAAmB,YAAY,kBAAkB;GAAQ,CAAA;GAC9E,oBAAC,eAAD;IAAe,OAAM;IAAU,YAAY,kBAAkB;GAAS,CAAA;GACrE,eAAe,gBAAgB,SAAS,IACvC,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,MAAD,EAAA,UAAI,eAAgB,CAAA;IACnB,OAAO,YAAY,gBAAgB,WAAW,oBAAC,KAAD,EAAA,UAAI,YAAY,YAAe,CAAA,IAAI;IAClF,oBAAC,kBAAD;KAAkB,OAAM;KAAkB,QAAQ;IAAgB,CAAA;GAClE,EAAA,CAAA,IACA;GACJ,oBAAC,cAAD,EAAyB,UAAY,CAAA;EAClC,EAAA,CAAA,GACL,oBAAC,KAAD;GAAK,QAAA;aACH,oBAAC,kBAAD;IACQ;IACA;IACE;IACG;IACC;IACK;GAClB,CAAA;EACE,CAAA,CACF,EAAA,CAAA,CACE;;AAEb;AAEA,SAAS,aAAa,MAAwC;CAAG,MAAM,EAAE,SAAS;CAQhF,OACE,oBAAC,OAAD;EAAK,WAAU;YAPD,sBAAsB,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,iBAAiB;GAChF;GACA,QAAQ,OAAO,YAAY;GAC3B;EACF,EAIK,EAAQ,KAAK,EAAE,MAAM,QAAQ,gBAC5B,oBAAC,kBAAD;GAAkD;GAAY;GAAc;GAAmB;EAAY,GAApF,GAAG,OAAO,GAAG,MAAuE,CAC5G;CACE,CAAA;AAET;AAEA,SAAS,oBAAoB,SAAiB,IAAoB;CAChE,MAAM,SAAS,UAAU,MAAM,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO;CAC5D,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,QAAQ,OACjB,IAAI,SAAS,MACX,MAAM,IAAI;MACL,IAAI,SAAS,KAClB,MAAM,KAAK,IAAI;CAGnB,OAAO,MAAM,KAAK,GAAG;AACvB;AAEA,SAAS,kBAAkB,UAAkB,kBAA2B,cAAc,IAAY;CAChG,IAAI,SAAS,WAAW,cAAc,GAAG,OAAO;CAEhD,MAAM,wBAAwB,YAAY,QAAQ,cAAc,EAAE;CAClE,MAAM,qBAAqB,SAAS,WAAW,GAAG,KAAK,yBAAyB,SAAS,MAAM,CAAC,EAAE,WAAW,GAAG,sBAAsB,EAAE,IACpI,MAAM,SAAS,MAAM,sBAAsB,SAAS,CAAC,IACrD;CAEJ,IAAI,mBAAmB,WAAW,GAAG,GACnC,OAAO,iBAAiB,mBAAmB,QAAQ,OAAO,EAAE;CAE9D,MAAM,UAAU,qBAAqB,MAAM,KAAK,kBAAkB,QAAQ,OAAO,EAAE,EAAE,QAAQ,YAAY,EAAE,KAAK;CAIhH,OAAO,iBAAiB,oBAHE,yBAAyB,QAAQ,WAAW,GAAG,sBAAsB,EAAE,IAC7F,QAAQ,MAAM,sBAAsB,SAAS,CAAC,IAC9C,SAC2D,kBAAkB;AACnF;AAEA,SAAS,eAAe,MAAoB,UAAuC;CACjF,MAAM,QAAQ,YAAY;CAC1B,MAAM,WAAW,YAAY;CAC7B,MAAM,SAAS,iBAAiB;CAEhC,IAAI,MAAM,OAAO;CACjB,IAAI,CAAC,UAAU,OAAO;CAGtB,OAAO,MADY,kBAAkB,UAAU,SAAS,UAAU,OAAO,WAC5D,MAAe;AAC9B;AAEA,SAAS,WAAW,MAAkE;CAAG,MAAM,EAAE,UAAU,OAAO,YAAY;CAM5H,OAAO,oBAAC,OAAD;EAAK,WAAW,KAAK,mBAJZ,SAAS,QACrB,oIACA,6IAEkD;EAAI;CAAc,CAAA;AAC1E;AAEA,SAAgB,YAAY,MAAmC;CAC7D,MAAM,EAAE,MAAM,aAAa;CAC3B,MAAM,WAAW,eAAe,MAAM,QAAQ;CAE9C,IAAI,CAAC,UACH,OAAO,qBAAC,YAAD,EAAA,UAAA,CAAY,4BAAyB,YAAY,uBAAoC,EAAA,CAAA;CAG9F,OACE,qBAAC,WAAD;EAAS,WAAU;YAAnB,CACE,qBAAC,OAAD;GAAO,WAAU;aAAjB,CACE,oBAAC,eAAD,EAAe,MAAM,SAAW,CAAA,GAChC,oBAAC,cAAD,EAAc,MAAM,SAAW,CAAA,CAC1B;MACP,oBAAC,YAAD,CAAa,CAAA,CACN;;AAEb;AAEA,SAAgB,YAAY,MAAmC;CAC7D,MAAM,EAAE,MAAM,MAAM,WAAW;CAC/B,MAAM,KAAK,oBAAoB,MAAM,MAAM,MAAM;CAEjD,IAAI,CAAC,IACH,OAAO,qBAAC,YAAD;EAAY,MAAK;YAAjB;GAAuB;GAAqB,OAAO,YAAY;GAAE;GAAE;EAAiB;;CAG7F,OAAO,oBAAC,kBAAD;EAAwB;EAAY;EAAM,QAAQ,OAAO,YAAY;EAAG,WAAW;CAAK,CAAA;AACjG;AAEA,SAAgB,gBAAgB,MAAuC;CACrE,MAAM,EAAE,UAAU,MAAM,WAAW;CACnC,MAAM,OAAO,eAAe,KAAA,GAAW,QAAQ;CAE/C,IAAI,CAAC,MACH,OAAO,qBAAC,YAAD,EAAA,UAAA,CAAY,4BAAyB,QAAqB,EAAA,CAAA;CAGnE,OAAO,oBAAC,aAAD;EAAmB;EAAY;EAAc;CAAS,CAAA;AAC/D;;;ACh0BA,SAAgB,iBAAiB,aAAsC,CAAC,GAAG;CACzE,OAAO;EACL,GAAG;EACH,GAAG;EACH;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../source/mdx/primitives.tsx","../source/openapi/helpers.ts","../source/openapi/request-code.ts","../source/openapi/example-panels.tsx","../source/openapi/schema-properties.tsx","../source/openapi/spec-path.ts","../source/openapi/utils.ts","../source/openapi/openapi-page.tsx","../source/mdx/components.ts"],"sourcesContent":["import clsx from 'clsx'\nimport { createElement, type ComponentPropsWithoutRef, type ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { Button, Callout, Card, CardGroup, Heading, Prose } from '../components'\nimport { Code, CodeGroup, Pre } from '../components/Code'\n\nexport function wrapper(arg0: { children: ReactNode }) { const { children } = arg0\n\n return (\n <article className=\"clarify-mdx-page flex h-full flex-col pt-16 pb-10\">\n <Prose className=\"flex-auto\">{children}</Prose>\n </article>\n )\n}\n\nexport function a(arg0: ComponentPropsWithoutRef<'a'>) { const { href = '', ...props } = arg0\n\n if (href.startsWith('/') && !href.startsWith('//')) {\n return <Link to={href} {...props} />\n }\n\n return <a href={href} {...props} />\n}\n\nexport const code = Code\nexport const pre = Pre\nexport { Button, Callout, Card, CardGroup, CodeGroup }\n\nexport function h2(props: Omit<ComponentPropsWithoutRef<typeof Heading>, 'level'>) {\n return createElement(Heading, { level: 2, ...props })\n}\n\nexport function h3(props: Omit<ComponentPropsWithoutRef<typeof Heading>, 'level'>) {\n return createElement(Heading, { level: 3, ...props })\n}\n\nfunction InfoIcon(props: ComponentPropsWithoutRef<'svg'>) {\n return (\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"8\" strokeWidth=\"0\" />\n <path fill=\"none\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.5\" d=\"M6.75 7.75h1.5v3.5\" />\n <circle cx=\"8\" cy=\"4\" r=\".5\" fill=\"none\" />\n </svg>\n )\n}\n\nexport function Note(arg0: { children: ReactNode }) { const { children } = arg0\n\n return (\n <div className=\"clarify-note my-6 flex gap-2.5 rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-theme-tokens-colors-foreground) dark:text-zinc-100 dark:[--tw-prose-links-hover:var(--clarify-ui-accent-text)] dark:[--tw-prose-links:var(--color-white)]\">\n <InfoIcon className=\"mt-1 h-4 w-4 flex-none fill-(--clarify-ui-accent-text) stroke-(--clarify-theme-tokens-colors-surface) dark:fill-(--clarify-ui-accent-background) dark:stroke-(--clarify-ui-accent-text)\" />\n <div className=\"*:first:mt-0 *:last:mb-0\">{children}</div>\n </div>\n )\n}\n\nexport function Row(arg0: { children: ReactNode }) { const { children } = arg0\n\n return <div className=\"clarify-row grid grid-cols-1 items-start gap-x-8 gap-y-10 xl:max-w-none xl:grid-cols-2\">{children}</div>\n}\n\nexport function Col(arg0: { children: ReactNode; sticky?: boolean }) { const { children, sticky = false } = arg0\n\n return <div className={clsx('clarify-col *:first:mt-0 *:last:mb-0', sticky && 'xl:sticky xl:top-24')}>{children}</div>\n}\n\nexport function Properties(arg0: { children: ReactNode }) { const { children } = arg0\n\n return (\n <div className=\"clarify-properties my-6\">\n <ul\n role=\"list\"\n className=\"m-0 list-none divide-y divide-zinc-900/5 p-0 dark:divide-white/5\"\n >\n {children}\n </ul>\n </div>\n )\n}\n\nexport function Property(arg0: { name: string; children: ReactNode; type?: string }) { const { name, children, type } = arg0\n\n return (\n <li className=\"clarify-property m-0 px-0 py-4 first:pt-0 last:pb-0\">\n <dl className=\"m-0 flex flex-wrap items-center gap-x-3 gap-y-2\">\n <dt className=\"sr-only\">Name</dt>\n <dd>\n <span className=\"text-sm/5 font-semibold text-zinc-950 dark:text-white\">{name}</span>\n </dd>\n {type ? (\n <>\n <dt className=\"sr-only\">Type</dt>\n <dd className=\"font-mono text-xs text-(--clarify-theme-tokens-colors-muted) dark:text-zinc-500\">{type}</dd>\n </>\n ) : null}\n <dt className=\"sr-only\">Description</dt>\n <dd className=\"w-full flex-none *:first:mt-0 *:last:mb-0\">{children}</dd>\n </dl>\n </li>\n )\n}\n","import type { ExampleEntry, MediaTypeEntry, OpenApiMediaType, OpenApiParameter, OpenApiRecord, OpenApiResponse } from './types'\nimport type { OpenAPIOperation, OpenAPISpec } from './utils'\n\nexport function isRecord(value: unknown): value is OpenApiRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nexport function isReference(value: unknown): value is { $ref: string } {\n return isRecord(value) && typeof value.$ref === 'string'\n}\n\nexport function resolveReferenceName(ref: string): string {\n return ref.split('/').filter(Boolean).at(-1) ?? ref\n}\n\nexport function resolveOpenApiRef(spec: OpenAPISpec, ref: string): unknown {\n if (!ref.startsWith('#/')) return undefined\n\n return ref\n .slice(2)\n .split('/')\n .map((part) => part.replace(/~1/g, '/').replace(/~0/g, '~'))\n .reduce<unknown>((current, part) => (isRecord(current) ? current[part] : undefined), spec)\n}\n\nexport function resolveSchema(spec: OpenAPISpec, schema: unknown, seen = new Set<string>()): unknown {\n if (!isReference(schema)) return schema\n if (seen.has(schema.$ref)) return schema\n\n seen.add(schema.$ref)\n return resolveSchema(spec, resolveOpenApiRef(spec, schema.$ref), seen) ?? schema\n}\n\nexport function getPathItem(spec: OpenAPISpec, path: string): OpenApiRecord | undefined {\n const pathItem = spec.paths?.[path]\n return isRecord(pathItem) ? pathItem : undefined\n}\n\nexport function getOperationParameters(spec: OpenAPISpec, path: string, operation: OpenAPIOperation): OpenApiParameter[] {\n const pathParameters = getPathItem(spec, path)?.parameters\n const operationParameters = (operation as OpenApiRecord).parameters\n\n return [...(Array.isArray(pathParameters) ? pathParameters : []), ...(Array.isArray(operationParameters) ? operationParameters : [])]\n .filter((parameter): parameter is OpenApiParameter => isRecord(parameter) && !isReference(parameter))\n}\n\nexport function getRequestBody(operation: OpenAPIOperation): OpenApiRecord | undefined {\n const requestBody = (operation as OpenApiRecord).requestBody\n return isRecord(requestBody) && !isReference(requestBody) ? requestBody : undefined\n}\n\nexport function getMediaTypeEntries(content: unknown): MediaTypeEntry[] {\n if (!isRecord(content)) return []\n\n return Object.entries(content)\n .filter(([, value]) => isRecord(value) && !isReference(value))\n .map(([mediaType, value]) => ({ mediaType, value: value as OpenApiMediaType }))\n .sort((a, z) => {\n const aJson = a.mediaType.includes('json') ? 0 : 1\n const zJson = z.mediaType.includes('json') ? 0 : 1\n return aJson - zJson\n })\n}\n\nexport function getJsonLikeContent(content: unknown): MediaTypeEntry | undefined {\n return getMediaTypeEntries(content)[0]\n}\n\nfunction getExampleValue(example: unknown): unknown {\n if (isRecord(example) && 'value' in example) return example.value\n if (isRecord(example) && 'externalValue' in example) return undefined\n return example\n}\n\nfunction getExampleTitle(key: string, example: unknown): { title: string; summary?: string } {\n if (isRecord(example)) {\n const summary = typeof example.summary === 'string' ? example.summary : undefined\n return { title: summary ?? key, summary }\n }\n\n return { title: key }\n}\n\nexport function getExampleEntries(mediaType?: OpenApiMediaType): ExampleEntry[] {\n if (!mediaType) return []\n\n if (isRecord(mediaType.examples)) {\n const examples: ExampleEntry[] = []\n\n for (const [key, example] of Object.entries(mediaType.examples)) {\n const value = getExampleValue(example)\n if (typeof value === 'undefined') continue\n\n const { title, summary } = getExampleTitle(key, example)\n examples.push({ key, title, summary, value })\n }\n\n if (examples.length > 0) return examples\n }\n\n if (typeof mediaType.example !== 'undefined') {\n return [{ key: 'default', title: 'Example', value: mediaType.example }]\n }\n\n const generated = schemaToExample(mediaType.schema)\n return typeof generated === 'undefined' ? [] : [{ key: 'schema', title: 'schema', value: generated, generated: true }]\n}\n\nexport function getContentExample(mediaType?: OpenApiMediaType): unknown {\n return getExampleEntries(mediaType)[0]?.value\n}\n\nexport function schemaToType(schema: unknown): string | undefined {\n if (!isRecord(schema)) return undefined\n if (isReference(schema)) return resolveReferenceName(schema.$ref)\n if (typeof schema.const !== 'undefined') return JSON.stringify(schema.const)\n if (Array.isArray(schema.enum)) return schema.enum.map(String).join(' | ')\n\n const oneOf = schema.oneOf ?? schema.anyOf\n if (Array.isArray(oneOf)) {\n return oneOf.map(schemaToType).filter(Boolean).join(' | ')\n }\n\n if (Array.isArray(schema.allOf)) {\n return schema.allOf.map(schemaToType).filter(Boolean).join(' & ')\n }\n\n if (schema.type === 'array') {\n return `${schemaToType(schema.items) ?? 'unknown'}[]`\n }\n\n const type = Array.isArray(schema.type) ? schema.type.map(String).join(' | ') : schema.type\n return typeof type === 'string' ? [type, typeof schema.format === 'string' ? `<${schema.format}>` : undefined].filter(Boolean).join('') : undefined\n}\n\nexport function schemaToExample(schema: unknown, depth = 0): unknown {\n if (!isRecord(schema) || depth > 3) return undefined\n if (typeof schema.example !== 'undefined') return schema.example\n if (typeof schema.default !== 'undefined') return schema.default\n if (Array.isArray(schema.enum)) return schema.enum[0]\n if (isReference(schema)) return { id: resolveReferenceName(schema.$ref) }\n\n if (schema.type === 'array') {\n return [schemaToExample(schema.items, depth + 1) ?? 'string']\n }\n\n if (schema.type === 'object' || isRecord(schema.properties)) {\n const properties = isRecord(schema.properties) ? schema.properties : {}\n return Object.fromEntries(\n Object.entries(properties).slice(0, 8).map(([name, propertySchema]) => [\n name,\n schemaToExample(propertySchema, depth + 1) ?? exampleForType(schemaToType(propertySchema)),\n ]),\n )\n }\n\n return exampleForType(schemaToType(schema))\n}\n\nfunction exampleForType(type?: string): unknown {\n if (!type) return 'string'\n if (type.endsWith('[]')) return []\n if (type.includes('integer') || type.includes('number')) return 42\n if (type.includes('boolean')) return true\n if (type.includes('object')) return {}\n return 'string'\n}\n\nexport function stringifyExample(value: unknown): string {\n if (typeof value === 'undefined') return ''\n if (typeof value === 'string') return value\n return JSON.stringify(value, null, 2)\n}\n\nexport function getResponseEntries(operation: OpenAPIOperation): Array<{ status: string; response: OpenApiResponse }> {\n const responses = (operation as OpenApiRecord).responses\n if (!isRecord(responses)) return []\n\n return Object.entries(responses)\n .filter(([, response]) => isRecord(response) && !isReference(response))\n .map(([status, response]) => ({ status, response: response as OpenApiResponse }))\n}\n\nexport function codeLanguageForMediaType(mediaType?: string): string {\n if (!mediaType) return 'json'\n if (mediaType.includes('json')) return 'json'\n if (mediaType.includes('yaml') || mediaType.includes('yml')) return 'yaml'\n if (mediaType.startsWith('text/')) return 'text'\n if (mediaType.includes('xml')) return 'xml'\n return 'text'\n}\n","import { snippetz } from '@scalar/snippetz'\nimport type { ClientId, HarRequest, TargetId } from '@scalar/snippetz'\n\nimport { getContentExample, isRecord, stringifyExample } from './helpers'\nimport type { OpenApiMediaType, OpenApiParameter, OpenApiServer, RequestAuthInput, RequestCodeExample } from './types'\nimport type { OpenAPISpec } from './utils'\n\nexport type RequestCodeInput = {\n spec: OpenAPISpec\n path: string\n method: string\n parameters: OpenApiParameter[]\n requestContent?: { mediaType: string; value: OpenApiMediaType }\n server?: OpenApiServer\n serverVariables?: Record<string, string>\n auth?: RequestAuthInput\n}\n\ntype RequestBody = {\n serialized?: string\n params?: NonNullable<HarRequest['postData']>['params']\n}\n\ntype SnippetTarget<T extends TargetId = TargetId> = {\n target: T\n client: ClientId<T>\n}\n\nconst snippetGenerator = snippetz()\n\nfunction getDefaultServer(spec: OpenAPISpec): OpenApiServer {\n const servers = (spec as Record<string, unknown>).servers\n if (!Array.isArray(servers)) return { url: 'https://api.example.com' }\n\n const firstServer = servers.find(isRecord)\n return firstServer && typeof firstServer.url === 'string' ? firstServer : { url: 'https://api.example.com' }\n}\n\nfunction expandServerUrl(server: OpenApiServer, serverVariables: Record<string, string> = {}): string {\n return (server.url ?? 'https://api.example.com').replace(/\\{([^}]+)\\}/g, (_, name: string) => {\n const fallback = server.variables?.[name]?.default ?? name\n return serverVariables[name] ?? fallback\n })\n}\n\nfunction buildOperationUrl(input: RequestCodeInput): string {\n const serverUrl = expandServerUrl(input.server ?? getDefaultServer(input.spec), input.serverVariables).replace(/\\/$/, '')\n return `${serverUrl}${input.path}`\n}\n\nfunction getQueryString(parameters: OpenApiParameter[], auth?: RequestAuthInput): HarRequest['queryString'] {\n const queryString = parameters\n .filter((parameter) => parameter.in === 'query' && parameter.name)\n .map((parameter) => ({ name: parameter.name, value: encodeUrlPlaceholders(`{${parameter.name}}`) }))\n\n if (auth?.scheme.type === 'apiKey' && auth.scheme.in === 'query' && auth.scheme.name) {\n queryString.push({ name: auth.scheme.name, value: auth.value })\n }\n\n return queryString\n}\n\nfunction isFormMediaType(mediaType: string): boolean {\n return mediaType.includes('multipart/form-data') || mediaType.includes('application/x-www-form-urlencoded')\n}\n\nfunction isBinarySchema(schema: unknown): boolean {\n return isRecord(schema) && schema.type === 'string' && schema.format === 'binary'\n}\n\nfunction getSchemaProperties(schema: unknown): Record<string, unknown> {\n return isRecord(schema) && isRecord(schema.properties) ? schema.properties : {}\n}\n\nfunction getFieldValue(name: string, value: unknown, schema: unknown): unknown {\n if (isRecord(value) && typeof value[name] !== 'undefined') return value[name]\n if (isBinarySchema(schema)) return `@${name}`\n return undefined\n}\n\nfunction getFormParams(value: unknown, requestContent: { mediaType: string; value: OpenApiMediaType }): RequestBody['params'] {\n const properties = getSchemaProperties(requestContent.value.schema)\n const fieldNames = Array.from(new Set([...Object.keys(properties), ...(isRecord(value) ? Object.keys(value) : [])]))\n\n return fieldNames.flatMap((name) => {\n const fieldValue = getFieldValue(name, value, properties[name])\n if (typeof fieldValue === 'undefined') return []\n\n const contentType = requestContent.value.encoding?.[name]?.contentType\n const serializedValue = typeof fieldValue === 'string' ? fieldValue : stringifyExample(fieldValue)\n\n return [{\n name,\n value: serializedValue,\n ...(contentType ? { contentType } : {}),\n }]\n })\n}\n\nfunction getBodySize(requestBody?: RequestBody): number {\n if (requestBody?.serialized) return requestBody.serialized.length\n return requestBody?.params?.reduce((size: number, param: { name: string; value?: unknown }) => size + param.name.length + String(param.value ?? '').length, 0) ?? 0\n}\n\nfunction getRequestBody(requestContent?: { mediaType: string; value: OpenApiMediaType }): RequestBody | undefined {\n const value = getContentExample(requestContent?.value)\n if (!requestContent || typeof value === 'undefined') return undefined\n\n if (isFormMediaType(requestContent.mediaType)) {\n const params = getFormParams(value, requestContent)\n return params.length > 0 ? { params } : undefined\n }\n\n return { serialized: stringifyExample(value) }\n}\n\nfunction getAuthorizationValue(auth: RequestAuthInput): string | undefined {\n if (auth.scheme.type === 'http' && auth.scheme.scheme?.toLowerCase() === 'bearer') return `Bearer ${auth.value}`\n if (auth.scheme.type === 'http' && auth.scheme.scheme?.toLowerCase() === 'basic') return `Basic ${auth.value}`\n if (auth.scheme.type === 'oauth2' || auth.scheme.type === 'openIdConnect') return `Bearer ${auth.value}`\n return undefined\n}\n\nfunction getAuthHeaders(auth?: RequestAuthInput): Record<string, string> {\n if (!auth) return {}\n\n if (auth.scheme.type === 'apiKey' && auth.scheme.in === 'header' && auth.scheme.name) {\n return { [auth.scheme.name]: auth.value }\n }\n\n const authorization = getAuthorizationValue(auth)\n return authorization ? { Authorization: authorization } : {}\n}\n\nfunction getRequestHeaders(requestContent?: { mediaType: string; value: OpenApiMediaType }, auth?: RequestAuthInput): Record<string, string> {\n return {\n ...getAuthHeaders(auth),\n Accept: 'application/json',\n ...(requestContent ? { 'Content-Type': requestContent.mediaType } : {}),\n }\n}\n\nfunction encodeUrlPlaceholders(url: string): string {\n return url.replace(/\\{([^}]+)\\}/g, (_, name: string) => `%7B${encodeURIComponent(name)}%7D`)\n}\n\nfunction decodeUrlPlaceholders(code: string): string {\n return code.replace(/%7B([^%]+)%7D/g, (_, name: string) => `{${decodeURIComponent(name)}}`)\n}\n\nfunction buildHarRequest(input: RequestCodeInput): HarRequest {\n const requestBody = getRequestBody(input.requestContent)\n const url = encodeUrlPlaceholders(buildOperationUrl(input))\n\n return {\n method: input.method,\n url,\n httpVersion: 'HTTP/1.1',\n cookies: [],\n headers: Object.entries(getRequestHeaders(input.requestContent, input.auth)).map(([name, value]) => ({ name, value })),\n queryString: getQueryString(input.parameters, input.auth),\n headersSize: -1,\n bodySize: getBodySize(requestBody),\n postData: requestBody\n ? {\n mimeType: input.requestContent?.mediaType ?? '',\n ...(requestBody.serialized ? { text: requestBody.serialized } : {}),\n ...(requestBody.params ? { params: requestBody.params } : {}),\n }\n : undefined,\n }\n}\n\nfunction buildSnippet(input: RequestCodeInput, target: SnippetTarget): string {\n const result = snippetGenerator.print(target.target, target.client, buildHarRequest(input))\n return decodeUrlPlaceholders(result || '')\n}\n\ntype RequestSnippetOption = SnippetTarget & {\n languageKey: string\n title: string\n language: string\n clientTitle: string\n}\n\nconst requestSnippetOptions: RequestSnippetOption[] = [\n { languageKey: 'shell', title: 'Shell', language: 'bash', target: 'shell', client: 'curl', clientTitle: 'cURL' },\n { languageKey: 'shell', title: 'Shell', language: 'bash', target: 'shell', client: 'wget', clientTitle: 'Wget' },\n { languageKey: 'shell', title: 'Shell', language: 'bash', target: 'shell', client: 'httpie', clientTitle: 'HTTPie' },\n { languageKey: 'javascript', title: 'JavaScript', language: 'javascript', target: 'js', client: 'fetch', clientTitle: 'Fetch' },\n { languageKey: 'javascript', title: 'JavaScript', language: 'javascript', target: 'js', client: 'axios', clientTitle: 'Axios' },\n { languageKey: 'javascript', title: 'JavaScript', language: 'javascript', target: 'js', client: 'ofetch', clientTitle: 'ofetch' },\n { languageKey: 'javascript', title: 'JavaScript', language: 'javascript', target: 'js', client: 'xhr', clientTitle: 'XHR' },\n { languageKey: 'typescript', title: 'TypeScript', language: 'typescript', target: 'js', client: 'fetch', clientTitle: 'Fetch' },\n { languageKey: 'typescript', title: 'TypeScript', language: 'typescript', target: 'js', client: 'axios', clientTitle: 'Axios' },\n { languageKey: 'typescript', title: 'TypeScript', language: 'typescript', target: 'js', client: 'ofetch', clientTitle: 'ofetch' },\n { languageKey: 'python', title: 'Python', language: 'python', target: 'python', client: 'requests', clientTitle: 'Requests' },\n { languageKey: 'python', title: 'Python', language: 'python', target: 'python', client: 'python3', clientTitle: 'http.client' },\n { languageKey: 'python', title: 'Python', language: 'python', target: 'python', client: 'httpx_sync', clientTitle: 'HTTPX' },\n { languageKey: 'python', title: 'Python', language: 'python', target: 'python', client: 'aiohttp', clientTitle: 'aiohttp' },\n { languageKey: 'go', title: 'Go', language: 'go', target: 'go', client: 'native', clientTitle: 'NewRequest' },\n { languageKey: 'node', title: 'Node.js', language: 'javascript', target: 'node', client: 'fetch', clientTitle: 'Fetch' },\n { languageKey: 'node', title: 'Node.js', language: 'javascript', target: 'node', client: 'axios', clientTitle: 'Axios' },\n { languageKey: 'node', title: 'Node.js', language: 'javascript', target: 'node', client: 'ofetch', clientTitle: 'ofetch' },\n { languageKey: 'node', title: 'Node.js', language: 'javascript', target: 'node', client: 'undici', clientTitle: 'undici' },\n { languageKey: 'java', title: 'Java', language: 'java', target: 'java', client: 'nethttp', clientTitle: 'java.net.http' },\n { languageKey: 'java', title: 'Java', language: 'java', target: 'java', client: 'okhttp', clientTitle: 'OkHttp' },\n { languageKey: 'java', title: 'Java', language: 'java', target: 'java', client: 'unirest', clientTitle: 'Unirest' },\n { languageKey: 'java', title: 'Java', language: 'java', target: 'java', client: 'asynchttp', clientTitle: 'AsyncHttp' },\n { languageKey: 'csharp', title: 'C#', language: 'csharp', target: 'csharp', client: 'httpclient', clientTitle: 'HttpClient' },\n { languageKey: 'csharp', title: 'C#', language: 'csharp', target: 'csharp', client: 'restsharp', clientTitle: 'RestSharp' },\n { languageKey: 'php', title: 'PHP', language: 'php', target: 'php', client: 'guzzle', clientTitle: 'Guzzle' },\n { languageKey: 'php', title: 'PHP', language: 'php', target: 'php', client: 'curl', clientTitle: 'cURL' },\n { languageKey: 'php', title: 'PHP', language: 'php', target: 'php', client: 'laravel', clientTitle: 'Laravel HTTP Client' },\n { languageKey: 'ruby', title: 'Ruby', language: 'ruby', target: 'ruby', client: 'native', clientTitle: 'net::http' },\n { languageKey: 'rust', title: 'Rust', language: 'rust', target: 'rust', client: 'reqwest', clientTitle: 'reqwest' },\n { languageKey: 'swift', title: 'Swift', language: 'swift', target: 'swift', client: 'nsurlsession', clientTitle: 'NSURLSession' },\n { languageKey: 'kotlin', title: 'Kotlin', language: 'kotlin', target: 'kotlin', client: 'okhttp', clientTitle: 'OkHttp' },\n { languageKey: 'powershell', title: 'PowerShell', language: 'powershell', target: 'powershell', client: 'restmethod', clientTitle: 'Invoke-RestMethod' },\n { languageKey: 'powershell', title: 'PowerShell', language: 'powershell', target: 'powershell', client: 'webrequest', clientTitle: 'Invoke-WebRequest' },\n]\n\nexport function buildRequestCodeExamples(input: RequestCodeInput): RequestCodeExample[] {\n return requestSnippetOptions.map((option) => ({\n key: `${option.languageKey}:${option.client}`,\n title: option.title,\n language: option.language,\n languageKey: option.languageKey,\n clientKey: option.client,\n clientTitle: option.clientTitle,\n code: buildSnippet(input, option),\n }))\n}\n","import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headlessui/react'\nimport { CheckIcon, ChevronsUpDownIcon, ClipboardIcon, CodeIcon, PackageIcon } from 'lucide-react'\nimport { useState, type ReactNode } from 'react'\n\nimport { useBuiltInText } from '../i18n'\n\nimport { codeLanguageForMediaType, getExampleEntries, getMediaTypeEntries, getResponseEntries, isRecord, stringifyExample } from './helpers'\nimport { buildRequestCodeExamples } from './request-code'\nimport type {\n ExampleEntry,\n MediaTypeEntry,\n OpenApiParameter,\n OpenApiSecurityRequirement,\n OpenApiSecurityScheme,\n OpenApiServer,\n RequestAuthInput,\n RequestCodeExample,\n} from './types'\nimport type { OpenAPIOperation, OpenAPISpec } from './utils'\n\ntype SelectOption = {\n value: string\n label: string\n}\n\nfunction SelectControl(arg0: {\n label: string\n value: string\n options: Array<string | SelectOption>\n onChange: (value: string) => void\n icon?: ReactNode\n compact?: boolean\n}): ReactNode {\n const {\n label,\n value,\n options,\n onChange,\n icon,\n compact = false,\n } = arg0\n\n const normalizedOptions = options.map((option) => (typeof option === 'string' ? { value: option, label: option } : option))\n const selectedOption = normalizedOptions.find((option) => option.value === value) ?? normalizedOptions[0]\n const wrapperClassName = compact ? 'clarify-api-select relative min-w-0 text-xs' : 'clarify-api-select relative shrink-0 text-xs'\n const buttonSizeClassName = compact ? 'w-full min-w-0 max-w-32' : 'min-w-28 max-w-48'\n\n if (normalizedOptions.length <= 1) return null\n\n return (\n <Listbox value={value} onChange={onChange}>\n <div className={wrapperClassName}>\n <ListboxButton\n aria-label={label}\n className={`clarify-api-select-button flex ${buttonSizeClassName} items-center justify-between gap-2 rounded-lg bg-black/30 px-2 py-1 font-mono text-xs font-medium whitespace-nowrap text-zinc-100 outline-hidden transition hover:bg-black/50 focus:ring-2 focus:ring-emerald-400/25 data-open:bg-white/10 data-open:ring-2 data-open:ring-emerald-400/25`}\n >\n <span className=\"flex min-w-0 items-center gap-1.5 overflow-hidden\">\n {icon ? <span className=\"shrink-0 text-zinc-500\">{icon}</span> : null}\n <span className=\"truncate\">{selectedOption?.label ?? value}</span>\n </span>\n <ChevronsUpDownIcon className=\"h-3.5 w-3.5 shrink-0 text-zinc-500\" aria-hidden=\"true\" />\n </ListboxButton>\n <ListboxOptions\n anchor=\"bottom end\"\n className=\"clarify-api-select-options z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-[min(32rem,calc(100vw-2rem))] overflow-auto rounded-xl bg-zinc-900 p-1 text-xs shadow-lg shadow-black/20 ring-1 ring-white/10 [--anchor-gap:--spacing(1)] focus:outline-none\"\n >\n {normalizedOptions.map((option) => (\n <ListboxOption\n key={option.value}\n value={option.value}\n className=\"clarify-api-select-option group flex cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 font-mono text-xs whitespace-nowrap text-zinc-300 select-none data-focus:bg-white/10 data-focus:text-white data-selected:text-emerald-300\"\n >\n <span>{option.label}</span>\n <CheckIcon className=\"h-3.5 w-3.5 shrink-0 opacity-0 group-data-selected:opacity-100\" aria-hidden=\"true\" />\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n )\n}\n\nfunction getExampleLabel(example: ExampleEntry, t: ReturnType<typeof useBuiltInText>): string {\n return example.generated && example.title === 'schema' ? t('openapi.schemaExample') : example.title\n}\n\nfunction getLanguageOptions(codeOptions?: RequestCodeExample[]): SelectOption[] {\n const languages = new Map<string, string>()\n for (const option of codeOptions ?? []) languages.set(option.languageKey, option.title)\n return Array.from(languages, ([value, label]) => ({ value, label }))\n}\n\nfunction getClientOptions(codeOptions: RequestCodeExample[] | undefined, languageKey?: string): SelectOption[] {\n return (codeOptions ?? [])\n .filter((option) => option.languageKey === languageKey)\n .map((option) => ({ value: option.clientKey, label: option.clientTitle }))\n}\n\nexport function getServers(spec: OpenAPISpec, operation: OpenAPIOperation): OpenApiServer[] {\n const operationServers = (operation as Record<string, unknown>).servers\n const servers = Array.isArray(operationServers) ? operationServers : (spec as Record<string, unknown>).servers\n if (!Array.isArray(servers)) return [{ url: 'https://api.example.com' }]\n const validServers = servers.filter((server): server is OpenApiServer => isRecord(server) && typeof server.url === 'string')\n return validServers.length > 0 ? validServers : [{ url: 'https://api.example.com' }]\n}\n\nexport function getServerKey(server: OpenApiServer, index: number): string {\n return `${index}:${server.url ?? ''}`\n}\n\nexport function getServerLabel(server: OpenApiServer, index: number): string {\n return server.description ? `${server.description} (${server.url})` : server.url ?? `Server ${index + 1}`\n}\n\nexport function defaultServerVariables(server?: OpenApiServer): Record<string, string> {\n return Object.fromEntries(\n Object.entries(server?.variables ?? {}).map(([name, variable]) => [name, variable.default ?? variable.enum?.[0] ?? '']),\n )\n}\n\nfunction getSecuritySchemes(spec: OpenAPISpec): Record<string, OpenApiSecurityScheme> {\n const schemes = (spec as Record<string, unknown>).components\n if (!isRecord(schemes) || !isRecord(schemes.securitySchemes)) return {}\n\n return Object.fromEntries(\n Object.entries(schemes.securitySchemes).filter((entry): entry is [string, OpenApiSecurityScheme] => isRecord(entry[1])),\n )\n}\n\nfunction getSecurityRequirements(spec: OpenAPISpec, operation: OpenAPIOperation): OpenApiSecurityRequirement[] {\n const operationSecurity = (operation as Record<string, unknown>).security\n if (Array.isArray(operationSecurity)) return operationSecurity.filter(isRecord) as OpenApiSecurityRequirement[]\n\n const specSecurity = (spec as Record<string, unknown>).security\n return Array.isArray(specSecurity) ? specSecurity.filter(isRecord) as OpenApiSecurityRequirement[] : []\n}\n\nexport type AuthOption = { name: string; scheme: OpenApiSecurityScheme }\n\nexport function getAuthOptions(spec: OpenAPISpec, operation: OpenAPIOperation): AuthOption[] {\n const schemes = getSecuritySchemes(spec)\n const requirements = getSecurityRequirements(spec, operation)\n const names = new Set(requirements.flatMap((requirement) => Object.keys(requirement)))\n\n return Array.from(names)\n .map((name) => ({ name, scheme: schemes[name] }))\n .filter((option): option is AuthOption => Boolean(option.scheme))\n}\n\nexport function authPlaceholder(auth?: { scheme: OpenApiSecurityScheme }): string {\n if (!auth) return ''\n if (auth.scheme.type === 'apiKey') return '{api_key}'\n if (auth.scheme.type === 'http' && auth.scheme.scheme?.toLowerCase() === 'basic') return '{base64_credentials}'\n return '{token}'\n}\n\nexport function authLabel(name: string, scheme: OpenApiSecurityScheme): string {\n const location = scheme.type === 'apiKey' && scheme.in && scheme.name ? ` · ${scheme.in}: ${scheme.name}` : ''\n return `${name}${location}`\n}\n\nfunction CopyCodeButton(arg0: { code: string }): ReactNode {\n const { code } = arg0\n\n const t = useBuiltInText()\n const [copied, setCopied] = useState(false)\n\n return (\n <button\n type=\"button\"\n onClick={() => {\n void window.navigator.clipboard.writeText(code).then(() => {\n setCopied(true)\n window.setTimeout(() => setCopied(false), 1000)\n })\n }}\n className=\"flex items-center gap-1.5 rounded-full bg-black/ px-2.5 py-1.5 text-2xs font-medium text-zinc-400 transition hover:bg-black/50 hover:text-zinc-200 focus:bg-black/50 focus:text-zinc-200\"\n >\n {copied ? (\n <CheckIcon className=\"h-3.5 w-3.5 text-emerald-300\" aria-hidden=\"true\" />\n ) : (\n <ClipboardIcon className=\"h-3.5 w-3.5 text-zinc-500\" aria-hidden=\"true\" />\n )}\n <span>{copied ? t('actions.copied') : t('actions.copy')}</span>\n </button>\n )\n}\n\nfunction ExampleMetaValue(arg0: {\n label: string\n value: string\n options?: string[]\n onChange?: (value: string) => void\n className: string\n}): ReactNode {\n const { label, value, options, onChange, className } = arg0\n\n if (options && options.length > 1 && onChange) {\n return <SelectControl label={label} value={value} options={options} onChange={onChange} />\n }\n\n return <span className={className}>{value}</span>\n}\n\nfunction CodeToolbar(arg0: {\n code: string\n languageOptions?: SelectOption[]\n selectedLanguageKey?: string\n onSelectLanguage?: (key: string) => void\n clientOptions?: SelectOption[]\n selectedClientKey?: string\n onSelectClient?: (key: string) => void\n}): ReactNode {\n const {\n code,\n languageOptions,\n selectedLanguageKey,\n onSelectLanguage,\n clientOptions,\n selectedClientKey,\n onSelectClient,\n } = arg0\n\n const t = useBuiltInText()\n\n return (\n <div className=\"absolute top-3.5 right-4 left-4 z-10 flex items-center justify-between gap-3\">\n <div className=\"flex min-w-0 items-center gap-2\">\n {languageOptions && languageOptions.length > 1 && selectedLanguageKey && onSelectLanguage ? (\n <SelectControl\n label={t('openapi.language')}\n value={selectedLanguageKey}\n options={languageOptions}\n onChange={onSelectLanguage}\n icon={<CodeIcon className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />}\n />\n ) : null}\n {clientOptions && clientOptions.length > 1 && selectedClientKey && onSelectClient ? (\n <SelectControl\n label={t('openapi.client')}\n value={selectedClientKey}\n options={clientOptions}\n onChange={onSelectClient}\n icon={<PackageIcon className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />}\n />\n ) : null}\n </div>\n <CopyCodeButton code={code} />\n </div>\n )\n}\n\nfunction ApiExampleCodeGroup(arg0: {\n title: string\n tag?: string\n tagOptions?: string[]\n onSelectTag?: (key: string) => void\n label?: string\n labelOptions?: string[]\n onSelectLabel?: (key: string) => void\n comfortableMeta?: boolean\n code: string\n language: string\n mediaTypes?: string[]\n selectedMediaType?: string\n onSelectMediaType?: (key: string) => void\n examples?: ExampleEntry[]\n selectedExampleKey?: string\n onSelectExample?: (key: string) => void\n languageOptions?: SelectOption[]\n selectedLanguageKey?: string\n onSelectLanguage?: (key: string) => void\n clientOptions?: SelectOption[]\n selectedClientKey?: string\n onSelectClient?: (key: string) => void\n}): ReactNode {\n const {\n title,\n tag,\n tagOptions,\n onSelectTag,\n label,\n labelOptions,\n onSelectLabel,\n comfortableMeta = false,\n code,\n language,\n mediaTypes,\n selectedMediaType,\n onSelectMediaType,\n examples,\n selectedExampleKey,\n onSelectExample,\n languageOptions,\n selectedLanguageKey,\n onSelectLanguage,\n clientOptions,\n selectedClientKey,\n onSelectClient,\n } = arg0\n\n const t = useBuiltInText()\n const metaClassName = comfortableMeta\n ? 'flex min-h-11 min-w-0 items-center gap-2 border-y border-t-transparent border-b-white/7.5 bg-zinc-900 px-4 py-2 dark:border-b-white/5 dark:bg-white/1'\n : 'flex h-9 min-w-0 items-center gap-2 border-y border-t-transparent border-b-white/7.5 bg-zinc-900 px-4 dark:border-b-white/5 dark:bg-white/1'\n\n return (\n <div className=\"clarify-api-example my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md dark:ring-1 dark:ring-white/10\">\n <div className=\"not-prose\">\n <div className=\"clarify-api-example-header flex min-h-[calc(--spacing(12)+1px)] items-center gap-3 border-b border-zinc-700 bg-zinc-800 px-4 py-2 dark:border-zinc-800 dark:bg-transparent\">\n <h3 className=\"mr-auto min-w-16 truncate py-1 text-xs font-semibold text-white\">{title}</h3>\n <div className=\"ml-auto flex min-w-0 items-center gap-2 whitespace-nowrap\">\n {mediaTypes && mediaTypes.length > 1 && selectedMediaType && onSelectMediaType ? (\n <SelectControl\n label={t('openapi.mediaType')}\n value={selectedMediaType}\n options={mediaTypes}\n onChange={onSelectMediaType}\n compact\n />\n ) : null}\n {examples && examples.length > 1 && selectedExampleKey && onSelectExample ? (\n <SelectControl\n label={t('openapi.example')}\n value={selectedExampleKey}\n options={examples.map((example) => ({ value: example.key, label: getExampleLabel(example, t) }))}\n onChange={onSelectExample}\n compact\n />\n ) : null}\n </div>\n </div>\n {tag || label ? (\n <div className={metaClassName}>\n {tag ? (\n <ExampleMetaValue\n label={t('openapi.status')}\n value={tag}\n options={tagOptions}\n onChange={onSelectTag}\n className=\"font-mono text-[0.625rem]/6 font-semibold text-emerald-400\"\n />\n ) : null}\n {tag && label ? <span className=\"h-0.5 w-0.5 shrink-0 rounded-full bg-zinc-500\" /> : null}\n {label ? (\n <ExampleMetaValue\n label={t('openapi.mediaType')}\n value={label}\n options={labelOptions}\n onChange={onSelectLabel}\n className=\"min-w-0 truncate font-mono text-xs text-zinc-400\"\n />\n ) : null}\n </div>\n ) : null}\n <div className=\"clarify-api-example-code group relative\">\n <CodeToolbar\n code={code}\n languageOptions={languageOptions}\n selectedLanguageKey={selectedLanguageKey}\n onSelectLanguage={onSelectLanguage}\n clientOptions={clientOptions}\n selectedClientKey={selectedClientKey}\n onSelectClient={onSelectClient}\n />\n <pre className={`overflow-x-auto p-4 text-xs text-white ${languageOptions && languageOptions.length > 1 ? 'pt-14' : ''}`}>\n <code className={`language-${language}`}>{code}</code>\n </pre>\n </div>\n </div>\n </div>\n )\n}\n\nexport function RequestExamplesPanel(arg0: {\n spec: OpenAPISpec\n path: string\n method: string\n parameters: OpenApiParameter[]\n requestContents: MediaTypeEntry[]\n selectedMediaType: string\n onSelectMediaType: (value: string) => void\n selectedServer: OpenApiServer\n serverVariables: Record<string, string>\n auth?: RequestAuthInput\n}): ReactNode {\n const {\n spec,\n path,\n method,\n parameters,\n requestContents,\n selectedMediaType,\n onSelectMediaType,\n selectedServer,\n serverVariables,\n auth,\n } = arg0\n\n const t = useBuiltInText()\n const selectedContent = requestContents.find((content) => content.mediaType === selectedMediaType) ?? requestContents[0]\n const examples = getExampleEntries(selectedContent?.value)\n const [selectedExampleKey, setSelectedExampleKey] = useState(examples[0]?.key ?? '')\n const [selectedLanguageKey, setSelectedLanguageKey] = useState('shell')\n const [selectedClientKey, setSelectedClientKey] = useState('curl')\n const selectedExample = examples.find((example) => example.key === selectedExampleKey) ?? examples[0]\n const requestContent = selectedContent ? { ...selectedContent, value: { ...selectedContent.value, example: selectedExample?.value, examples: undefined } } : undefined\n const codeOptions = buildRequestCodeExamples({\n spec,\n path,\n method,\n parameters,\n requestContent,\n server: selectedServer,\n serverVariables,\n auth,\n })\n const selectedLanguage = codeOptions.find((option) => option.languageKey === selectedLanguageKey) ?? codeOptions[0]\n const selectedCode =\n codeOptions.find((option) => option.languageKey === selectedLanguage.languageKey && option.clientKey === selectedClientKey) ??\n selectedLanguage\n const languageOptions = getLanguageOptions(codeOptions)\n const clientOptions = getClientOptions(codeOptions, selectedCode.languageKey)\n\n return (\n <ApiExampleCodeGroup\n title={t('openapi.request')}\n tag={method}\n label={path}\n code={selectedCode.code}\n language={selectedCode.language}\n mediaTypes={requestContents.map((content) => content.mediaType)}\n selectedMediaType={selectedContent?.mediaType}\n onSelectMediaType={(value) => {\n onSelectMediaType(value)\n setSelectedExampleKey(getExampleEntries(requestContents.find((content) => content.mediaType === value)?.value)[0]?.key ?? '')\n }}\n examples={examples}\n selectedExampleKey={selectedExample?.key}\n onSelectExample={setSelectedExampleKey}\n languageOptions={languageOptions}\n selectedLanguageKey={selectedCode.languageKey}\n onSelectLanguage={(value) => {\n const nextCode = codeOptions.find((option) => option.languageKey === value)\n setSelectedLanguageKey(nextCode?.languageKey ?? value)\n setSelectedClientKey(nextCode?.clientKey ?? '')\n }}\n clientOptions={clientOptions}\n selectedClientKey={selectedCode.clientKey}\n onSelectClient={setSelectedClientKey}\n />\n )\n}\n\nexport function ResponseExamplesPanel(arg0: { operation: OpenAPIOperation }): ReactNode {\n const { operation } = arg0\n\n const t = useBuiltInText()\n const responses = getResponseEntries(operation).filter(({ response }) => getMediaTypeEntries(response.content).length > 0)\n const [selectedStatus, setSelectedStatus] = useState(responses.find(({ status }) => status.startsWith('2'))?.status ?? responses[0]?.status ?? '')\n const selectedResponse = responses.find(({ status }) => status === selectedStatus) ?? responses[0]\n const responseContents = getMediaTypeEntries(selectedResponse?.response.content)\n const [selectedMediaType, setSelectedMediaType] = useState(responseContents[0]?.mediaType ?? '')\n const selectedContent = responseContents.find((content) => content.mediaType === selectedMediaType) ?? responseContents[0]\n const examples = getExampleEntries(selectedContent?.value)\n const [selectedExampleKey, setSelectedExampleKey] = useState(examples[0]?.key ?? '')\n const selectedExample = examples.find((example) => example.key === selectedExampleKey) ?? examples[0]\n const responseCode = stringifyExample(selectedExample?.value)\n\n if (!selectedResponse || !selectedContent || !responseCode) return null\n\n return (\n <ApiExampleCodeGroup\n title={t('openapi.response')}\n tag={selectedResponse.status}\n tagOptions={responses.map(({ status }) => status)}\n onSelectTag={(value) => {\n const nextResponse = responses.find(({ status }) => status === value)\n const nextContents = getMediaTypeEntries(nextResponse?.response.content)\n setSelectedStatus(value)\n setSelectedMediaType(nextContents[0]?.mediaType ?? '')\n setSelectedExampleKey(getExampleEntries(nextContents[0]?.value)[0]?.key ?? '')\n }}\n label={selectedContent.mediaType}\n labelOptions={responseContents.map((content) => content.mediaType)}\n onSelectLabel={(value) => {\n setSelectedMediaType(value)\n setSelectedExampleKey(getExampleEntries(responseContents.find((content) => content.mediaType === value)?.value)[0]?.key ?? '')\n }}\n comfortableMeta\n code={responseCode}\n language={codeLanguageForMediaType(selectedContent.mediaType)}\n examples={examples}\n selectedExampleKey={selectedExample?.key}\n onSelectExample={setSelectedExampleKey}\n />\n )\n}\n","import clsx from 'clsx'\nimport { ChevronDown, ChevronRight } from 'lucide-react'\nimport { useState, type ReactNode } from 'react'\n\nimport { useBuiltInText } from '../i18n'\nimport { Properties, Property } from '../mdx/primitives'\n\nimport { getJsonLikeContent, getResponseEntries, isRecord, isReference, resolveReferenceName, resolveSchema, schemaToType } from './helpers'\nimport type { OpenApiParameter } from './types'\nimport type { OpenAPIOperation, OpenAPISpec } from './utils'\n\ntype SchemaTreeNode = {\n key: string\n name: string\n type?: string\n description?: string\n required: boolean\n children: SchemaTreeNode[]\n}\n\ntype SchemaTreeBranch = {\n label: string\n schema: unknown\n}\n\nfunction getSchemaDescription(schema: Record<string, unknown>): string | undefined {\n const details = [\n Array.isArray(schema.enum) ? `enum: ${schema.enum.map(String).join(', ')}` : undefined,\n typeof schema.const !== 'undefined' ? `const: ${String(schema.const)}` : undefined,\n typeof schema.default !== 'undefined' ? `default: ${String(schema.default)}` : undefined,\n typeof schema.pattern === 'string' ? `pattern: ${schema.pattern}` : undefined,\n typeof schema.minimum === 'number' ? `minimum: ${String(schema.minimum)}` : undefined,\n typeof schema.maximum === 'number' ? `maximum: ${String(schema.maximum)}` : undefined,\n typeof schema.additionalProperties === 'boolean' ? `additionalProperties: ${String(schema.additionalProperties)}` : undefined,\n ].filter(Boolean)\n const description = typeof schema.description === 'string' ? schema.description : undefined\n\n return [description, details.length > 0 ? details.join('; ') : undefined].filter(Boolean).join(' ')\n}\n\nfunction getComposedBranches(schema: Record<string, unknown>): SchemaTreeBranch[] {\n const entries: SchemaTreeBranch[] = []\n\n for (const key of ['allOf', 'oneOf', 'anyOf'] as const) {\n const items = schema[key]\n if (!Array.isArray(items)) continue\n\n for (const [index, item] of items.entries()) {\n entries.push({ label: `${key}[${index}]`, schema: item })\n }\n }\n\n return entries\n}\n\nfunction getSchemaChildren(arg0: {\n spec: OpenAPISpec\n schema: unknown\n path: string\n required?: string[]\n depth?: number\n seen?: Set<string>\n}): SchemaTreeNode[] { const {\n spec,\n schema,\n path,\n required = [],\n depth = 0,\n seen = new Set<string>(),\n} = arg0\n\n if (depth > 12) return []\n\n if (isReference(schema)) {\n if (seen.has(schema.$ref)) return []\n return getSchemaChildren({\n spec,\n schema: resolveSchema(spec, schema),\n path,\n required,\n depth,\n seen: new Set([...seen, schema.$ref]),\n })\n }\n\n if (!isRecord(schema)) return []\n\n const arrayChildren = schema.type === 'array'\n ? getSchemaChildren({ spec, schema: schema.items, path: `${path}[]`, depth: depth + 1, seen })\n : []\n\n const objectRequired = Array.isArray(schema.required) ? schema.required.map(String) : required\n const properties = isRecord(schema.properties) ? schema.properties : {}\n const propertyChildren = Object.entries(properties).map(([name, propertySchema]) => {\n const resolvedProperty = resolveSchema(spec, propertySchema)\n const property = isRecord(resolvedProperty) ? resolvedProperty : isRecord(propertySchema) ? propertySchema : {}\n const isArray = isRecord(property) && property.type === 'array'\n const childPath = path ? `${path}.${name}` : name\n const children = getSchemaChildren({\n spec,\n schema: isArray ? property.items : propertySchema,\n path: isArray ? `${childPath}[]` : childPath,\n depth: depth + 1,\n seen,\n })\n\n return {\n key: childPath,\n name,\n type: schemaToType(propertySchema),\n description: getSchemaDescription(property),\n required: objectRequired.includes(name),\n children,\n }\n })\n\n const additionalPropertyChildren = isRecord(schema.additionalProperties)\n ? [{\n key: `${path || 'root'}.*`,\n name: '*',\n type: schemaToType(schema.additionalProperties),\n description: getSchemaDescription(schema.additionalProperties),\n required: false,\n children: getSchemaChildren({ spec, schema: schema.additionalProperties, path: `${path || 'root'}.*`, depth: depth + 1, seen }),\n }]\n : []\n\n const composedChildren = getComposedBranches(schema).map(({ label, schema: branchSchema }) => ({\n key: `${path || 'root'}.${label}`,\n name: label,\n type: schemaToType(branchSchema),\n description: isRecord(resolveSchema(spec, branchSchema)) ? getSchemaDescription(resolveSchema(spec, branchSchema) as Record<string, unknown>) : undefined,\n required: false,\n children: getSchemaChildren({ spec, schema: branchSchema, path: `${path || 'root'}.${label}`, required: objectRequired, depth: depth + 1, seen }),\n }))\n\n return [...arrayChildren, ...propertyChildren, ...additionalPropertyChildren, ...composedChildren]\n}\n\nfunction getRootSchemaNode(spec: OpenAPISpec, schema: unknown): SchemaTreeNode | undefined {\n if (isReference(schema)) {\n const resolvedSchema = resolveSchema(spec, schema)\n const resolved = isRecord(resolvedSchema) ? resolvedSchema : {}\n\n return {\n key: schema.$ref,\n name: resolveReferenceName(schema.$ref),\n type: schemaToType(schema),\n description: getSchemaDescription(resolved),\n required: false,\n children: getSchemaChildren({ spec, schema: resolvedSchema, path: resolveReferenceName(schema.$ref), seen: new Set([schema.$ref]) }),\n }\n }\n\n if (!isRecord(schema)) return undefined\n\n return {\n key: 'root',\n name: 'body',\n type: schemaToType(schema),\n description: getSchemaDescription(schema),\n required: false,\n children: getSchemaChildren({ spec, schema, path: '' }),\n }\n}\n\nfunction SchemaNode(arg0: { node: SchemaTreeNode; depth?: number }): ReactNode { const { node, depth = 0 } = arg0\n\n const t = useBuiltInText()\n const [expanded, setExpanded] = useState(depth < 1)\n const hasChildren = node.children.length > 0\n const type = [node.type, node.required ? t('openapi.requiredBadge') : undefined].filter(Boolean).join(', ') || undefined\n const description = node.description || (node.required ? t('openapi.required') : t('openapi.optional'))\n const rowClassName = clsx(\n 'flex min-w-0 items-start rounded py-0.5 text-left',\n depth > 0 ? '-mx-2 w-[calc(100%+1rem)] px-2' : 'w-full px-1',\n )\n\n const content = (\n <>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5\">\n <span className=\"text-sm/5 font-semibold text-zinc-950 dark:text-white\">{node.name}</span>\n {type ? <span className=\"font-mono text-xs text-(--clarify-theme-tokens-colors-muted) dark:text-zinc-500\">{type}</span> : null}\n </div>\n {description ? <div className=\"mt-0.5 text-sm/5 text-zinc-600 dark:text-zinc-400\">{description}</div> : null}\n </div>\n {hasChildren ? (\n <span className=\"ml-2 flex h-5 w-5 flex-none items-center justify-center text-zinc-500 dark:text-zinc-400\" aria-hidden=\"true\">\n {expanded ? <ChevronDown className=\"h-4 w-4\" /> : <ChevronRight className=\"h-4 w-4\" />}\n </span>\n ) : null}\n </>\n )\n\n return (\n <li className=\"clarify-schema-node m-0 px-0 py-2 first:pt-0 last:pb-0\">\n {hasChildren ? (\n <button\n type=\"button\"\n aria-label={expanded ? t('openapi.collapse') : t('openapi.expand')}\n aria-expanded={expanded}\n onClick={() => setExpanded((value) => !value)}\n className={clsx(rowClassName, 'cursor-pointer transition')}\n >\n {content}\n </button>\n ) : (\n <div className={rowClassName}>{content}</div>\n )}\n {hasChildren && expanded ? <SchemaTree nodes={node.children} depth={depth + 1} /> : null}\n </li>\n )\n}\n\nfunction SchemaTree(arg0: { nodes: SchemaTreeNode[]; depth?: number }): ReactNode { const { nodes, depth = 0 } = arg0\n\n if (nodes.length === 0) return null\n\n return (\n <ul\n role=\"list\"\n className={clsx(\n 'm-0 list-none divide-y divide-zinc-900/5 p-0 dark:divide-white/5',\n depth > 0 && 'mt-2 rounded-lg bg-zinc-950/[0.025] px-2 py-1 dark:bg-white/[0.04]',\n )}\n >\n {nodes.map((node) => <SchemaNode key={node.key} node={node} depth={depth} />)}\n </ul>\n )\n}\n\nexport function SchemaProperties(arg0: { title: string; schema: unknown; spec: OpenAPISpec }): ReactNode { const { title, schema, spec } = arg0\n\n const root = getRootSchemaNode(spec, schema)\n\n if (!root || root.children.length === 0) return null\n\n return (\n <div>\n <h3>{title}</h3>\n <div className=\"clarify-schema-properties my-6\">\n <SchemaTree nodes={root.children} />\n </div>\n </div>\n )\n}\n\nexport function ParameterList(arg0: { title: string; parameters: OpenApiParameter[] }): ReactNode { const { title, parameters } = arg0\n\n const t = useBuiltInText()\n if (parameters.length === 0) return null\n\n return (\n <div>\n <h3>{title}</h3>\n <Properties>\n {parameters.map((parameter) => (\n <Property\n key={`${parameter.in}-${parameter.name}`}\n name={parameter.name ?? t('openapi.parameter')}\n type={[schemaToType(parameter.schema), parameter.required ? t('openapi.requiredBadge') : undefined].filter(Boolean).join(', ') || undefined}\n >\n {parameter.description ?? t('openapi.operationParameter')}\n </Property>\n ))}\n </Properties>\n </div>\n )\n}\n\nexport function ResponseList(arg0: { operation: OpenAPIOperation }): ReactNode { const { operation } = arg0\n\n const t = useBuiltInText()\n const responses = getResponseEntries(operation)\n if (responses.length === 0) return null\n\n return (\n <div>\n <h3>{t('openapi.responses')}</h3>\n <Properties>\n {responses.map(({ status, response }) => {\n const content = getJsonLikeContent(response.content)\n const type = schemaToType(content?.value.schema)\n\n return (\n <Property key={status} name={status} type={type}>\n {response.description ?? `${t('openapi.response')}.`}\n </Property>\n )\n })}\n </Properties>\n </div>\n )\n}\n","import { useLocation } from 'react-router-dom'\n\nimport { useClarifyConfig, useOpenApis } from '../context'\n\nimport type { OpenAPISpec } from './utils'\n\nconst VIRTUAL_PREFIX = 'virtual:clarify-page/'\n\nfunction resolveRelativePath(fromDir: string, to: string): string {\n const parts = (fromDir + '/' + to).split('/').filter(Boolean)\n const stack: string[] = []\n for (const part of parts) {\n if (part === '..') {\n stack.pop()\n } else if (part !== '.') {\n stack.push(part)\n }\n }\n return stack.join('/')\n}\n\nfunction normalizeSpecPath(specPath: string, currentRoutePath?: string, routePrefix = ''): string {\n if (specPath.startsWith(VIRTUAL_PREFIX)) return specPath\n\n const normalizedRoutePrefix = routePrefix.replace(/^\\/+|\\/+$/g, '')\n const normalizedSpecPath = specPath.startsWith('/') && normalizedRoutePrefix && specPath.slice(1).startsWith(`${normalizedRoutePrefix}/`)\n ? '/' + specPath.slice(normalizedRoutePrefix.length + 2)\n : specPath\n\n if (normalizedSpecPath.startsWith('/')) {\n return VIRTUAL_PREFIX + normalizedSpecPath.replace(/^\\//, '')\n }\n const fromDir = currentRoutePath === '/' ? '' : currentRoutePath?.replace(/^\\//, '').replace(/\\/[^/]*$/, '') ?? ''\n const normalizedFromDir = normalizedRoutePrefix && fromDir.startsWith(`${normalizedRoutePrefix}/`)\n ? fromDir.slice(normalizedRoutePrefix.length + 1)\n : fromDir\n return VIRTUAL_PREFIX + resolveRelativePath(normalizedFromDir, normalizedSpecPath)\n}\n\nexport function useOpenApiSpec(spec?: OpenAPISpec, specPath?: string): OpenAPISpec | null {\n const specs = useOpenApis()\n const location = useLocation()\n const config = useClarifyConfig()\n\n if (spec) return spec\n if (!specPath) return null\n\n const normalized = normalizeSpecPath(specPath, location.pathname, config.routePrefix)\n return specs[normalized] ?? null\n}\n","import type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'\n\nexport type OpenAPISpec = OpenAPIV3.Document | OpenAPIV3_1.Document\nexport type OpenAPIOperation = OpenAPIV3.OperationObject | OpenAPIV3_1.OperationObject\n\nexport const OPENAPI_HTTP_METHODS = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'] as const\n\nexport type OpenAPIHttpMethod = typeof OPENAPI_HTTP_METHODS[number]\n\nexport function isOpenAPIHttpMethod(method: string): method is OpenAPIHttpMethod {\n return (OPENAPI_HTTP_METHODS as readonly string[]).includes(method.toLowerCase())\n}\n\nexport function getOpenApiOperation(spec: OpenAPISpec, path: string, method: string): OpenAPIOperation | undefined {\n if (!isOpenAPIHttpMethod(method)) return undefined\n return spec.paths?.[path]?.[method.toLowerCase() as OpenAPIHttpMethod]\n}\n\nexport function listOpenApiOperations(spec: OpenAPISpec): Array<{ path: string; method: OpenAPIHttpMethod; operation: OpenAPIOperation }> {\n const paths = spec.paths ?? {}\n const operations: Array<{ path: string; method: OpenAPIHttpMethod; operation: OpenAPIOperation }> = []\n\n for (const [path, pathItem] of Object.entries(paths)) {\n if (!pathItem) continue\n for (const method of OPENAPI_HTTP_METHODS) {\n const operation = pathItem[method]\n if (operation) operations.push({ path, method, operation })\n }\n }\n\n return operations\n}\n","import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { slug } from 'github-slugger'\nimport { CheckIcon, ChevronDownIcon, LockKeyholeIcon, ServerIcon, UnlockKeyholeIcon } from 'lucide-react'\nimport { useState, type ReactNode } from 'react'\n\nimport { Heading, Prose } from '../components'\nimport { useBuiltInText } from '../i18n'\nimport { Col, Row } from '../mdx/primitives'\n\nimport { authLabel, authPlaceholder, defaultServerVariables, getAuthOptions, getServerKey, getServerLabel, getServers, RequestExamplesPanel, ResponseExamplesPanel } from './example-panels'\nimport type { AuthOption } from './example-panels'\nimport { getMediaTypeEntries, getOperationParameters, getRequestBody } from './helpers'\nimport { SchemaProperties, ParameterList, ResponseList } from './schema-properties'\nimport { useOpenApiSpec } from './spec-path'\nimport type { OpenApiParameter, MediaTypeEntry, OpenApiServer, OpenApiServerVariable, RequestAuthInput } from './types'\nimport { getOpenApiOperation, listOpenApiOperations } from './utils'\nimport type { OpenAPIOperation, OpenAPISpec } from './utils'\n\nexport type OpenApiPageProps = {\n spec?: OpenAPISpec\n specPath?: string\n}\n\nexport type ApiEndpointProps = {\n spec: OpenAPISpec\n path: string\n method: string\n}\n\nexport type OpenApiEndpointProps = {\n specPath: string\n path: string\n method: string\n}\n\nfunction EndpointExamples(arg0: {\n spec: OpenAPISpec\n path: string\n method: string\n operation: OpenAPIOperation\n parameters: OpenApiParameter[]\n requestContents: MediaTypeEntry[]\n selectedRequestMediaType: string\n onSelectRequestMediaType: (value: string) => void\n selectedServer: OpenApiServer\n serverVariables: Record<string, string>\n auth?: RequestAuthInput\n}): ReactNode { const {\n spec,\n path,\n method,\n operation,\n parameters,\n requestContents,\n selectedRequestMediaType,\n onSelectRequestMediaType,\n selectedServer,\n serverVariables,\n auth,\n} = arg0\n\n return (\n <div className=\"space-y-6\">\n <RequestExamplesPanel\n spec={spec}\n path={path}\n method={method}\n parameters={parameters}\n requestContents={requestContents}\n selectedMediaType={selectedRequestMediaType}\n onSelectMediaType={onSelectRequestMediaType}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n auth={auth}\n />\n <ResponseExamplesPanel operation={operation} />\n </div>\n )\n}\n\nfunction OpenApiHeader(arg0: { spec: OpenAPISpec }): ReactNode { const { spec } = arg0\n\n const t = useBuiltInText()\n return (\n <header className=\"mb-16\">\n <p className=\"mb-3 font-mono text-xs/6 font-medium tracking-widest text-emerald-500 uppercase dark:text-emerald-400\">\n {t('openapi.openApiReference')}\n </p>\n <h1>{spec.info?.title ?? t('openapi.apiDocumentation')}</h1>\n {spec.info?.description ? <p className=\"lead\">{spec.info.description}</p> : null}\n {spec.info?.version ? <p className=\"text-sm text-zinc-500 dark:text-zinc-400\">{t('openapi.version', { version: spec.info.version })}</p> : null}\n </header>\n )\n}\n\nconst endpointMethodStyles: Record<string, string> = {\n GET: 'bg-emerald-400/15 text-emerald-600 dark:bg-emerald-400/20 dark:text-emerald-300',\n POST: 'bg-sky-400/15 text-sky-600 dark:bg-sky-400/20 dark:text-sky-300',\n PUT: 'bg-amber-400/15 text-amber-600 dark:bg-amber-400/20 dark:text-amber-300',\n PATCH: 'bg-amber-400/15 text-amber-600 dark:bg-amber-400/20 dark:text-amber-300',\n DELETE: 'bg-rose-400/15 text-rose-600 dark:bg-rose-400/20 dark:text-rose-300',\n}\n\nfunction EndpointMethodBadge(arg0: { method: string }): ReactNode { const { method } = arg0\n\n return (\n <span\n className={clsx(\n 'rounded-(--clarify-theme-tokens-radius-md) px-2.5 py-0.5 font-mono text-xs/6 font-black tracking-wide',\n endpointMethodStyles[method] ?? 'bg-zinc-400/15 text-zinc-700 dark:bg-zinc-400/20 dark:text-zinc-200',\n )}\n >\n {method}\n </span>\n )\n}\n\ntype UiOption = {\n value: string\n label: string\n description?: string\n}\n\nfunction InlineListbox(arg0: {\n label: string\n value: string\n options: UiOption[]\n onChange: (value: string) => void\n compact?: boolean\n}): ReactNode { const { label, value, options, onChange, compact = false } = arg0\n\n const selected = options.find((option) => option.value === value) ?? options[0]\n\n return (\n <Listbox value={selected?.value ?? value} onChange={onChange}>\n <div className=\"pointer-events-auto relative inline-flex min-w-0\">\n <ListboxButton\n aria-label={label}\n className={clsx(\n 'inline-flex min-w-0 items-center gap-1 rounded-md border border-zinc-200 bg-white font-mono font-semibold text-zinc-900 shadow-xs outline-hidden transition hover:border-zinc-300 hover:bg-zinc-50 data-open:border-zinc-300 data-open:bg-zinc-50 dark:border-white/10 dark:bg-zinc-950 dark:text-zinc-100 dark:hover:border-white/15 dark:hover:bg-zinc-900 dark:data-open:border-white/15 dark:data-open:bg-zinc-900',\n compact ? 'max-w-32 px-1.5 py-0.5 text-xs' : 'w-full px-2.5 py-1.5 text-xs',\n )}\n >\n <span className=\"truncate\">{selected?.label ?? value}</span>\n <ChevronDownIcon className=\"h-3.5 w-3.5 shrink-0 text-zinc-500 dark:text-zinc-400\" aria-hidden=\"true\" />\n </ListboxButton>\n <ListboxOptions anchor=\"bottom start\" className=\"z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-[min(32rem,calc(100vw-2rem))] overflow-auto rounded-xl bg-white p-1 text-xs shadow-lg shadow-black/10 ring-1 ring-zinc-950/10 [--anchor-gap:--spacing(1)] focus:outline-none dark:bg-zinc-950 dark:ring-white/10\">\n {options.map((option) => (\n <ListboxOption key={option.value} value={option.value} className=\"group flex cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 font-mono text-xs text-zinc-700 select-none data-focus:bg-zinc-100 data-selected:text-emerald-700 dark:text-zinc-200 dark:data-focus:bg-white/10 dark:data-selected:text-emerald-300\">\n <span className=\"min-w-0\">\n <span className=\"block truncate\">{option.label}</span>\n {option.description ? <span className=\"mt-0.5 block truncate text-2xs text-zinc-500 dark:text-zinc-400\">{option.description}</span> : null}\n </span>\n <CheckIcon className=\"h-3.5 w-3.5 shrink-0 opacity-0 group-data-selected:opacity-100\" aria-hidden=\"true\" />\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n )\n}\n\nfunction getServerPreviewUrl(server: OpenApiServer, variables: Record<string, string>): string {\n return (server.url ?? '').replace(/\\{([^}]+)\\}/g, (_, name: string) => variables[name] ?? server.variables?.[name]?.default ?? `{${name}}`)\n}\n\nfunction ServerUrlValue(arg0: {\n server: OpenApiServer\n variables: Record<string, string>\n open: boolean\n onToggle: () => void\n}): ReactNode { const { server, variables, open, onToggle } = arg0\n\n const url = getServerPreviewUrl(server, variables)\n\n return (\n <button\n type=\"button\"\n aria-expanded={open}\n aria-label=\"Server\"\n onClick={onToggle}\n className={clsx(\n 'flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-zinc-100/50 text-zinc-600 transition hover:bg-zinc-100 hover:text-zinc-950 dark:bg-white/5 dark:text-zinc-300 dark:hover:bg-white/10 dark:hover:text-white sm:w-auto sm:min-w-16 sm:max-w-[min(36%,16rem)] sm:px-1.5',\n open ? 'bg-zinc-200 text-zinc-950 dark:bg-white/12 dark:text-white' : null,\n )}\n >\n <span className=\"sm:hidden\"><ServerIcon className=\"h-4 w-4\" aria-hidden=\"true\" /></span>\n <span className=\"hidden min-w-0 items-center gap-1 overflow-hidden sm:flex\">\n <span className=\"truncate font-mono text-xs\">{url}</span>\n <ChevronDownIcon className=\"h-3.5 w-3.5 shrink-0 text-zinc-400\" aria-hidden=\"true\" />\n </span>\n </button>\n )\n}\n\nfunction ServerVariableControl(arg0: {\n name: string\n variable?: OpenApiServerVariable\n value: string\n onChange: (value: string) => void\n compact?: boolean\n}): ReactNode { const { name, variable, value, onChange, compact = false } = arg0\n\n if (variable?.enum?.length) {\n return (\n <InlineListbox\n label={name}\n value={value}\n options={variable.enum.map((option) => ({ value: option, label: option }))}\n onChange={onChange}\n compact={compact}\n />\n )\n }\n\n return (\n <input\n aria-label={name}\n value={value}\n placeholder={variable?.default ?? name}\n onChange={(event) => onChange(event.target.value)}\n className={clsx(\n 'pointer-events-auto rounded-md border border-zinc-200 bg-white font-mono text-xs font-semibold text-zinc-900 shadow-xs outline-hidden transition placeholder:text-zinc-500 hover:border-zinc-300 hover:bg-zinc-50 focus:border-zinc-400 focus:bg-white dark:border-white/10 dark:bg-zinc-950 dark:text-zinc-100 dark:placeholder:text-zinc-500 dark:hover:border-white/15 dark:hover:bg-zinc-900 dark:focus:border-white/20 dark:focus:bg-zinc-950',\n compact ? 'mx-0.5 w-24 px-1.5 py-0.5' : 'w-full px-2.5 py-1.5',\n )}\n />\n )\n}\n\nfunction ServerPanel(arg0: {\n servers: OpenApiServer[]\n selectedKey: string\n selectedServer: OpenApiServer\n variables: Record<string, string>\n onSelectServer: (key: string) => void\n onChangeVariable: (name: string, value: string) => void\n}): ReactNode { const { servers, selectedKey, selectedServer, variables, onSelectServer, onChangeVariable } = arg0\n\n const variableEntries = Object.entries(selectedServer.variables ?? {})\n\n return (\n <div className=\"border-t border-zinc-200 bg-zinc-100/70 p-3 dark:border-white/10 dark:bg-zinc-900/60\">\n <div className=\"grid gap-3 sm:grid-cols-[minmax(0,1fr)_minmax(0,1.2fr)]\">\n {servers.length > 1 ? (\n <label className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"text-2xs font-semibold text-zinc-700 dark:text-zinc-300\">Server</span>\n <InlineListbox\n label=\"Server\"\n value={selectedKey}\n options={servers.map((server, index) => ({\n value: getServerKey(server, index),\n label: getServerLabel(server, index),\n description: server.description,\n }))}\n onChange={onSelectServer}\n />\n </label>\n ) : null}\n {variableEntries.map(([name, variable]) => (\n <label key={name} className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"text-2xs font-semibold text-zinc-700 dark:text-zinc-300\">{name}</span>\n <ServerVariableControl\n name={name}\n variable={variable}\n value={variables[name] ?? variable.default ?? ''}\n onChange={(value) => onChangeVariable(name, value)}\n />\n </label>\n ))}\n </div>\n </div>\n )\n}\n\nfunction AuthPanel(arg0: {\n authOptions: AuthOption[]\n selectedAuthName: string\n selectedAuth?: AuthOption\n authValues: Record<string, string>\n onSelectAuth: (name: string) => void\n onChangeAuthValue: (name: string, value: string) => void\n}): ReactNode { const { authOptions, selectedAuthName, selectedAuth, authValues, onSelectAuth, onChangeAuthValue } = arg0\n\n if (authOptions.length === 0) return null\n\n return (\n <div className=\"border-t border-zinc-200 bg-zinc-100/70 p-3 dark:border-white/10 dark:bg-zinc-900/60\">\n <div className=\"grid gap-3 sm:grid-cols-[minmax(0,1fr)_minmax(0,1.2fr)]\">\n <label className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"text-2xs font-semibold text-zinc-700 dark:text-zinc-300\">Auth</span>\n <InlineListbox\n label=\"Auth\"\n value={selectedAuthName}\n options={authOptions.map(({ name, scheme }) => ({\n value: name,\n label: name,\n description: authLabel(name, scheme),\n }))}\n onChange={onSelectAuth}\n />\n </label>\n {selectedAuth ? (\n <label className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"text-2xs font-semibold text-zinc-700 dark:text-zinc-300\">Credential</span>\n <div className=\"flex min-w-0 items-center rounded-md border border-zinc-200 bg-white px-2.5 py-1.5 shadow-xs dark:border-white/10 dark:bg-zinc-950\">\n <span className=\"mr-2 shrink-0 font-mono text-2xs font-semibold text-zinc-600 dark:text-zinc-400\">\n {selectedAuth.scheme.type === 'apiKey' ? selectedAuth.scheme.in ?? 'apiKey' : selectedAuth.scheme.scheme ?? selectedAuth.scheme.type ?? 'token'}\n </span>\n <input\n value={authValues[selectedAuth.name] ?? authPlaceholder(selectedAuth)}\n onChange={(event) => onChangeAuthValue(selectedAuth.name, event.target.value)}\n className=\"min-w-0 flex-1 border-0 bg-transparent px-0 py-0 font-mono text-xs font-semibold text-zinc-900 outline-hidden placeholder:text-zinc-500 dark:text-zinc-100 dark:placeholder:text-zinc-500\"\n />\n </div>\n </label>\n ) : null}\n </div>\n </div>\n )\n}\n\nfunction EndpointIdentity(arg0: {\n method: string\n path: string\n servers: OpenApiServer[]\n selectedServerKey: string\n selectedServer: OpenApiServer\n serverVariables: Record<string, string>\n serverOpen: boolean\n authOptions: AuthOption[]\n selectedAuthName: string\n selectedAuth?: AuthOption\n authValues: Record<string, string>\n authOpen: boolean\n onSelectServer: (key: string) => void\n onChangeServerVariable: (name: string, value: string) => void\n onToggleServer: () => void\n onToggleAuth: () => void\n onSelectAuth: (name: string) => void\n onChangeAuthValue: (name: string, value: string) => void\n}): ReactNode { const {\n method,\n path,\n servers,\n selectedServerKey,\n selectedServer,\n serverVariables,\n serverOpen,\n authOptions,\n selectedAuthName,\n selectedAuth,\n authValues,\n authOpen,\n onSelectServer,\n onChangeServerVariable,\n onToggleServer,\n onToggleAuth,\n onSelectAuth,\n onChangeAuthValue,\n} = arg0\n\n const segments = path.split('/').filter(Boolean)\n\n return (\n <div className=\"not-prose flex w-full flex-col overflow-hidden rounded-xl border border-zinc-200 bg-white shadow-xs dark:border-white/10 dark:bg-zinc-950\">\n <div className=\"flex min-w-0 items-center gap-1.5 overflow-hidden px-2.5 py-2\">\n <EndpointMethodBadge method={method} />\n <ServerUrlValue\n server={selectedServer}\n variables={serverVariables}\n open={serverOpen}\n onToggle={onToggleServer}\n />\n <div className=\"flex min-w-0 flex-1 items-center overflow-x-auto font-mono text-sm font-bold leading-6 whitespace-nowrap\">\n {segments.length > 0 ? (\n <>\n <span className=\"text-zinc-400\">/</span>\n {segments.map((segment, index) => (\n <span key={`${segment}-${index}`} className=\"flex items-center\">\n {index > 0 ? <span className=\"text-zinc-400\">/</span> : null}\n <span className=\"font-bold text-zinc-800 dark:text-white\">{segment}</span>\n </span>\n ))}\n </>\n ) : (\n <span className=\"font-bold text-zinc-800 dark:text-white\">/</span>\n )}\n </div>\n {authOptions.length > 0 ? (\n <button\n type=\"button\"\n aria-expanded={authOpen}\n aria-label=\"Auth\"\n onClick={onToggleAuth}\n className={clsx(\n 'ml-auto flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-zinc-600 transition hover:bg-zinc-100 hover:text-emerald-700 dark:text-zinc-300 dark:hover:bg-white/10 dark:hover:text-emerald-200',\n authOpen ? 'bg-emerald-100 text-emerald-800 dark:bg-emerald-400/15 dark:text-emerald-100' : 'bg-zinc-50 dark:bg-white/5',\n )}\n >\n {authOpen ? <UnlockKeyholeIcon className=\"h-4 w-4\" aria-hidden=\"true\" /> : <LockKeyholeIcon className=\"h-4 w-4\" aria-hidden=\"true\" />}\n </button>\n ) : null}\n </div>\n {serverOpen ? (\n <ServerPanel\n servers={servers}\n selectedKey={selectedServerKey}\n selectedServer={selectedServer}\n variables={serverVariables}\n onSelectServer={onSelectServer}\n onChangeVariable={onChangeServerVariable}\n />\n ) : null}\n {authOpen ? (\n <AuthPanel\n authOptions={authOptions}\n selectedAuthName={selectedAuthName}\n selectedAuth={selectedAuth}\n authValues={authValues}\n onSelectAuth={onSelectAuth}\n onChangeAuthValue={onChangeAuthValue}\n />\n ) : null}\n </div>\n )\n}\n\nfunction OpenApiOperation(arg0: { spec: OpenAPISpec; path: string; method: string; operation: OpenAPIOperation }): ReactNode { const { spec, path, method, operation } = arg0\n\n const t = useBuiltInText()\n const id = slug(`${method.toLowerCase()} ${path}`)\n const summary = operation.summary ?? `${method} ${path}`\n const description = operation.description\n const parameters = getOperationParameters(spec, path, operation)\n const requestBody = getRequestBody(operation)\n const requestContents = getMediaTypeEntries(requestBody?.content)\n const [selectedRequestMediaType, setSelectedRequestMediaType] = useState(requestContents[0]?.mediaType ?? '')\n const selectedRequestContent = requestContents.find((content) => content.mediaType === selectedRequestMediaType) ?? requestContents[0]\n const requestSchema = selectedRequestContent?.value.schema\n const servers = getServers(spec, operation)\n const [selectedServerKey, setSelectedServerKey] = useState(getServerKey(servers[0], 0))\n const selectedServer = servers.find((server, index) => getServerKey(server, index) === selectedServerKey) ?? servers[0]\n const [serverVariables, setServerVariables] = useState(defaultServerVariables(selectedServer))\n const [serverOpen, setServerOpen] = useState(false)\n const authOptions = getAuthOptions(spec, operation)\n const [selectedAuthName, setSelectedAuthName] = useState(authOptions[0]?.name ?? '')\n const selectedAuth = authOptions.find((option) => option.name === selectedAuthName)\n const [authValues, setAuthValues] = useState<Record<string, string>>({})\n const [authOpen, setAuthOpen] = useState(false)\n const authInput: RequestAuthInput | undefined = selectedAuth\n ? { name: selectedAuth.name, scheme: selectedAuth.scheme, value: authValues[selectedAuth.name] ?? authPlaceholder(selectedAuth) }\n : undefined\n const groupedParameters = {\n path: parameters.filter((parameter) => parameter.in === 'path'),\n query: parameters.filter((parameter) => parameter.in === 'query'),\n header: parameters.filter((parameter) => parameter.in === 'header'),\n }\n\n return (\n <section className=\"clarify-api-endpoint scroll-mt-24 py-16 first:pt-0 last:pb-0\" aria-labelledby={id}>\n <EndpointIdentity\n method={method}\n path={path}\n servers={servers}\n selectedServerKey={selectedServerKey}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n serverOpen={serverOpen}\n authOptions={authOptions}\n selectedAuthName={selectedAuthName}\n selectedAuth={selectedAuth}\n authValues={authValues}\n authOpen={authOpen}\n onSelectServer={(value) => {\n const nextServer = servers.find((server, index) => getServerKey(server, index) === value) ?? servers[0]\n setSelectedServerKey(value)\n setServerVariables(defaultServerVariables(nextServer))\n }}\n onChangeServerVariable={(name, value) => setServerVariables((current) => ({ ...current, [name]: value }))}\n onToggleServer={() => {\n setServerOpen((current) => !current)\n setAuthOpen(false)\n }}\n onToggleAuth={() => {\n setAuthOpen((current) => !current)\n setServerOpen(false)\n }}\n onSelectAuth={setSelectedAuthName}\n onChangeAuthValue={(name, value) => setAuthValues((current) => ({ ...current, [name]: value }))}\n />\n <Heading id={id} className=\"mt-4\">\n {summary}\n </Heading>\n <Row>\n <Col>\n {description ? <p>{description}</p> : null}\n <ParameterList title={t('openapi.pathParameters')} parameters={groupedParameters.path} />\n <ParameterList title={t('openapi.queryParameters')} parameters={groupedParameters.query} />\n <ParameterList title={t('openapi.headers')} parameters={groupedParameters.header} />\n {requestBody && requestContents.length > 0 ? (\n <>\n <h3>{t('openapi.requestBody')}</h3>\n {typeof requestBody.description === 'string' ? <p>{requestBody.description}</p> : null}\n <SchemaProperties title={t('openapi.bodyProperties')} schema={requestSchema} spec={spec} />\n </>\n ) : null}\n <ResponseList operation={operation} />\n </Col>\n <Col sticky>\n <EndpointExamples\n spec={spec}\n path={path}\n method={method}\n operation={operation}\n parameters={parameters}\n requestContents={requestContents}\n selectedRequestMediaType={selectedRequestContent?.mediaType ?? ''}\n onSelectRequestMediaType={setSelectedRequestMediaType}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n auth={authInput}\n />\n </Col>\n </Row>\n </section>\n )\n}\n\nfunction OpenApiPaths(arg0: { spec: OpenAPISpec }): ReactNode { const { spec } = arg0\n\n const entries = listOpenApiOperations(spec).map(({ path, method, operation }) => ({\n path,\n method: method.toUpperCase(),\n operation,\n }))\n\n return (\n <div className=\"clarify-api-endpoints divide-y divide-zinc-200/70 dark:divide-white/10\">\n {entries.map(({ path, method, operation }) => (\n <OpenApiOperation key={`${method}-${path}`} spec={spec} path={path} method={method} operation={operation} />\n ))}\n </div>\n )\n}\n\nfunction WarningBox(arg0: { children: ReactNode; tone?: 'amber' | 'red' }): ReactNode { const { children, tone = 'amber' } = arg0\n\n const classes = tone === 'red'\n ? 'rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200'\n : 'rounded-lg border border-amber-200 bg-amber-50 p-4 text-sm text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200'\n\n return <div className={clsx('clarify-warning', classes)}>{children}</div>\n}\n\nexport function OpenApiPage(arg0: OpenApiPageProps): ReactNode {\n const { spec, specPath } = arg0\n const t = useBuiltInText()\n const resolved = useOpenApiSpec(spec, specPath)\n\n if (!resolved) {\n return <WarningBox>{t('openapi.specNotFound', { specPath: specPath ?? t('openapi.specPathMissing') })}</WarningBox>\n }\n\n return (\n <article className=\"clarify-openapi-page flex h-full flex-col pt-16 pb-10\">\n <Prose className=\"flex-auto\">\n <OpenApiHeader spec={resolved} />\n <OpenApiPaths spec={resolved} />\n </Prose>\n </article>\n )\n}\n\nexport function ApiEndpoint(arg0: ApiEndpointProps): ReactNode {\n const { spec, path, method } = arg0\n const t = useBuiltInText()\n const op = getOpenApiOperation(spec, path, method)\n\n if (!op) {\n return <WarningBox tone=\"red\">{t('openapi.endpointNotFound', { endpoint: `${method.toUpperCase()} ${path}` })}</WarningBox>\n }\n\n return <OpenApiOperation spec={spec} path={path} method={method.toUpperCase()} operation={op} />\n}\n\nexport function OpenApiEndpoint(arg0: OpenApiEndpointProps): ReactNode {\n const { specPath, path, method } = arg0\n const t = useBuiltInText()\n const spec = useOpenApiSpec(undefined, specPath)\n\n if (!spec) {\n return <WarningBox>{t('openapi.specNotFound', { specPath })}</WarningBox>\n }\n\n return <ApiEndpoint spec={spec} path={path} method={method} />\n}\n","import { ApiEndpointCard, DocShell } from '../components'\nimport { OpenApiPage, ApiEndpoint, OpenApiEndpoint } from '../openapi'\n\nimport * as mdxPrimitives from './primitives'\n\nexport function useMDXComponents(components: Record<string, unknown> = {}) {\n return {\n ...components,\n ...mdxPrimitives,\n OpenApiPage,\n ApiEndpoint,\n OpenApiEndpoint,\n ApiEndpointCard,\n DocShell,\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { ReactNode } from 'react';
2
+ import { MediaTypeEntry, OpenApiParameter, OpenApiSecurityScheme, OpenApiServer, RequestAuthInput } from './types';
3
+ import { OpenAPIOperation, OpenAPISpec } from './utils';
4
+ export declare function getServers(spec: OpenAPISpec, operation: OpenAPIOperation): OpenApiServer[];
5
+ export declare function getServerKey(server: OpenApiServer, index: number): string;
6
+ export declare function getServerLabel(server: OpenApiServer, index: number): string;
7
+ export declare function defaultServerVariables(server?: OpenApiServer): Record<string, string>;
8
+ export type AuthOption = {
9
+ name: string;
10
+ scheme: OpenApiSecurityScheme;
11
+ };
12
+ export declare function getAuthOptions(spec: OpenAPISpec, operation: OpenAPIOperation): AuthOption[];
13
+ export declare function authPlaceholder(auth?: {
14
+ scheme: OpenApiSecurityScheme;
15
+ }): string;
16
+ export declare function authLabel(name: string, scheme: OpenApiSecurityScheme): string;
17
+ export declare function RequestExamplesPanel(arg0: {
18
+ spec: OpenAPISpec;
19
+ path: string;
20
+ method: string;
21
+ parameters: OpenApiParameter[];
22
+ requestContents: MediaTypeEntry[];
23
+ selectedMediaType: string;
24
+ onSelectMediaType: (value: string) => void;
25
+ selectedServer: OpenApiServer;
26
+ serverVariables: Record<string, string>;
27
+ auth?: RequestAuthInput;
28
+ }): ReactNode;
29
+ export declare function ResponseExamplesPanel(arg0: {
30
+ operation: OpenAPIOperation;
31
+ }): ReactNode;
@@ -0,0 +1,24 @@
1
+ import { ExampleEntry, MediaTypeEntry, OpenApiMediaType, OpenApiParameter, OpenApiRecord, OpenApiResponse } from './types';
2
+ import { OpenAPIOperation, OpenAPISpec } from './utils';
3
+ export declare function isRecord(value: unknown): value is OpenApiRecord;
4
+ export declare function isReference(value: unknown): value is {
5
+ $ref: string;
6
+ };
7
+ export declare function resolveReferenceName(ref: string): string;
8
+ export declare function resolveOpenApiRef(spec: OpenAPISpec, ref: string): unknown;
9
+ export declare function resolveSchema(spec: OpenAPISpec, schema: unknown, seen?: Set<string>): unknown;
10
+ export declare function getPathItem(spec: OpenAPISpec, path: string): OpenApiRecord | undefined;
11
+ export declare function getOperationParameters(spec: OpenAPISpec, path: string, operation: OpenAPIOperation): OpenApiParameter[];
12
+ export declare function getRequestBody(operation: OpenAPIOperation): OpenApiRecord | undefined;
13
+ export declare function getMediaTypeEntries(content: unknown): MediaTypeEntry[];
14
+ export declare function getJsonLikeContent(content: unknown): MediaTypeEntry | undefined;
15
+ export declare function getExampleEntries(mediaType?: OpenApiMediaType): ExampleEntry[];
16
+ export declare function getContentExample(mediaType?: OpenApiMediaType): unknown;
17
+ export declare function schemaToType(schema: unknown): string | undefined;
18
+ export declare function schemaToExample(schema: unknown, depth?: number): unknown;
19
+ export declare function stringifyExample(value: unknown): string;
20
+ export declare function getResponseEntries(operation: OpenAPIOperation): Array<{
21
+ status: string;
22
+ response: OpenApiResponse;
23
+ }>;
24
+ export declare function codeLanguageForMediaType(mediaType?: string): string;
@@ -1,20 +1,3 @@
1
- import { ReactNode } from 'react';
2
- import { OpenAPISpec } from './utils';
1
+ export { ApiEndpoint, OpenApiEndpoint, OpenApiPage } from './openapi-page';
2
+ export type { ApiEndpointProps, OpenApiEndpointProps, OpenApiPageProps } from './openapi-page';
3
3
  export type { OpenAPIOperation, OpenAPISpec } from './utils';
4
- export type OpenApiPageProps = {
5
- spec?: OpenAPISpec;
6
- specPath?: string;
7
- };
8
- export type ApiEndpointProps = {
9
- spec: OpenAPISpec;
10
- path: string;
11
- method: string;
12
- };
13
- export type OpenApiEndpointProps = {
14
- specPath: string;
15
- path: string;
16
- method: string;
17
- };
18
- export declare function OpenApiPage(arg0: OpenApiPageProps): ReactNode;
19
- export declare function ApiEndpoint(arg0: ApiEndpointProps): ReactNode;
20
- export declare function OpenApiEndpoint(arg0: OpenApiEndpointProps): ReactNode;
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ import { OpenAPISpec } from './utils';
3
+ export type OpenApiPageProps = {
4
+ spec?: OpenAPISpec;
5
+ specPath?: string;
6
+ };
7
+ export type ApiEndpointProps = {
8
+ spec: OpenAPISpec;
9
+ path: string;
10
+ method: string;
11
+ };
12
+ export type OpenApiEndpointProps = {
13
+ specPath: string;
14
+ path: string;
15
+ method: string;
16
+ };
17
+ export declare function OpenApiPage(arg0: OpenApiPageProps): ReactNode;
18
+ export declare function ApiEndpoint(arg0: ApiEndpointProps): ReactNode;
19
+ export declare function OpenApiEndpoint(arg0: OpenApiEndpointProps): ReactNode;
@@ -0,0 +1,16 @@
1
+ import { OpenApiMediaType, OpenApiParameter, OpenApiServer, RequestAuthInput, RequestCodeExample } from './types';
2
+ import { OpenAPISpec } from './utils';
3
+ export type RequestCodeInput = {
4
+ spec: OpenAPISpec;
5
+ path: string;
6
+ method: string;
7
+ parameters: OpenApiParameter[];
8
+ requestContent?: {
9
+ mediaType: string;
10
+ value: OpenApiMediaType;
11
+ };
12
+ server?: OpenApiServer;
13
+ serverVariables?: Record<string, string>;
14
+ auth?: RequestAuthInput;
15
+ };
16
+ export declare function buildRequestCodeExamples(input: RequestCodeInput): RequestCodeExample[];
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { OpenApiParameter } from './types';
3
+ import { OpenAPIOperation, OpenAPISpec } from './utils';
4
+ export declare function SchemaProperties(arg0: {
5
+ title: string;
6
+ schema: unknown;
7
+ spec: OpenAPISpec;
8
+ }): ReactNode;
9
+ export declare function ParameterList(arg0: {
10
+ title: string;
11
+ parameters: OpenApiParameter[];
12
+ }): ReactNode;
13
+ export declare function ResponseList(arg0: {
14
+ operation: OpenAPIOperation;
15
+ }): ReactNode;
@@ -0,0 +1,2 @@
1
+ import { OpenAPISpec } from './utils';
2
+ export declare function useOpenApiSpec(spec?: OpenAPISpec, specPath?: string): OpenAPISpec | null;