@clarify-labs/renderer 0.11.4 → 0.11.6

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 (64) hide show
  1. package/output/{ClarifyShell-gzlibEm8.js → ClarifyShell-CKvXZj0f.js} +120 -41
  2. package/output/ClarifyShell-CKvXZj0f.js.map +1 -0
  3. package/output/{ClarifyShell-Cvb7Nk3A.cjs → ClarifyShell-CukbPOAd.cjs} +120 -41
  4. package/output/ClarifyShell-CukbPOAd.cjs.map +1 -0
  5. package/output/{MermaidViewer-CPuTNujY.cjs → MermaidViewer-FOg263MO.cjs} +6 -7
  6. package/output/MermaidViewer-FOg263MO.cjs.map +1 -0
  7. package/output/{MermaidViewer-EVuBmrzA.js → MermaidViewer-_tpH0JNn.js} +6 -7
  8. package/output/MermaidViewer-_tpH0JNn.js.map +1 -0
  9. package/output/{OpenApiOperation-Ddax6Pen.js → OpenApiOperation-Dv9u2GEJ.js} +63 -59
  10. package/output/OpenApiOperation-Dv9u2GEJ.js.map +1 -0
  11. package/output/{OpenApiOperation-QqYCuqve.cjs → OpenApiOperation-c-I6Nw9j.cjs} +82 -60
  12. package/output/OpenApiOperation-c-I6Nw9j.cjs.map +1 -0
  13. package/output/{PageActions-BBRz0tJ4.js → PageActions-DviEypf6.js} +41 -43
  14. package/output/PageActions-DviEypf6.js.map +1 -0
  15. package/output/{PageActions-ypH6U0Vc.cjs → PageActions-ob2OJusG.cjs} +41 -43
  16. package/output/PageActions-ob2OJusG.cjs.map +1 -0
  17. package/output/{SearchDialog-Df6jknma.js → SearchDialog-89JAjQMh.js} +3 -3
  18. package/output/{SearchDialog-Df6jknma.js.map → SearchDialog-89JAjQMh.js.map} +1 -1
  19. package/output/{SearchDialog-DCGBhNnW.cjs → SearchDialog-CTiUIKeo.cjs} +3 -3
  20. package/output/{SearchDialog-DCGBhNnW.cjs.map → SearchDialog-CTiUIKeo.cjs.map} +1 -1
  21. package/output/app/AppShell.d.ts +1 -0
  22. package/output/app/BuiltWithClarify.d.ts +5 -1
  23. package/output/app/ContentDiagnostic.d.ts +1 -1
  24. package/output/client.cjs +3 -3
  25. package/output/client.js +3 -3
  26. package/output/{i18n-LXAq0RIC.js → i18n-Cff810G_.js} +3 -3
  27. package/output/i18n-Cff810G_.js.map +1 -0
  28. package/output/{i18n-Ds-f-qlT.cjs → i18n-Cjfk1N7i.cjs} +3 -3
  29. package/output/i18n-Cjfk1N7i.cjs.map +1 -0
  30. package/output/index.cjs +104 -20
  31. package/output/index.cjs.map +1 -1
  32. package/output/index.d.ts +3 -3
  33. package/output/index.js +102 -21
  34. package/output/index.js.map +1 -1
  35. package/output/mdx/components.d.ts +2 -1
  36. package/output/openapi/components/EndpointMethodBadge.d.ts +1 -0
  37. package/output/openapi/components/OpenApiLink.d.ts +9 -0
  38. package/output/openapi/components/OpenApiRequest.d.ts +1 -0
  39. package/output/openapi/components/useOpenApiRequestState.d.ts +1 -1
  40. package/output/openapi/entry.d.ts +4 -3
  41. package/output/openapi/index.d.ts +1 -0
  42. package/output/openapi/lib/utils.d.ts +1 -0
  43. package/output/preview.cjs +4 -4
  44. package/output/preview.cjs.map +1 -1
  45. package/output/preview.js +4 -4
  46. package/output/preview.js.map +1 -1
  47. package/output/{render-C2rZuVLy.js → render-B41PHjt8.js} +2 -2
  48. package/output/{render-C2rZuVLy.js.map → render-B41PHjt8.js.map} +1 -1
  49. package/output/{render-BQkaRYoY.cjs → render-BxiVlY6q.cjs} +2 -2
  50. package/output/{render-BQkaRYoY.cjs.map → render-BxiVlY6q.cjs.map} +1 -1
  51. package/output/renderer.css +38 -16
  52. package/output/server.cjs +2 -2
  53. package/output/server.js +2 -2
  54. package/package.json +1 -1
  55. package/output/ClarifyShell-Cvb7Nk3A.cjs.map +0 -1
  56. package/output/ClarifyShell-gzlibEm8.js.map +0 -1
  57. package/output/MermaidViewer-CPuTNujY.cjs.map +0 -1
  58. package/output/MermaidViewer-EVuBmrzA.js.map +0 -1
  59. package/output/OpenApiOperation-Ddax6Pen.js.map +0 -1
  60. package/output/OpenApiOperation-QqYCuqve.cjs.map +0 -1
  61. package/output/PageActions-BBRz0tJ4.js.map +0 -1
  62. package/output/PageActions-ypH6U0Vc.cjs.map +0 -1
  63. package/output/i18n-Ds-f-qlT.cjs.map +0 -1
  64. package/output/i18n-LXAq0RIC.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiOperation-c-I6Nw9j.cjs","names":[],"sources":["../source/components/AccordionGroup.tsx","../source/components/LocalizedLink.tsx","../source/components/Button.tsx","../source/components/Callout.tsx","../source/components/Card.tsx","../source/components/Mermaid.tsx","../source/components/Code.tsx","../source/components/Collapse.tsx","../source/components/Feedback.tsx","../source/components/FileTree.tsx","../source/components/Tag.tsx","../source/components/Heading.tsx","../source/components/Logo.tsx","../source/components/patterns.tsx","../source/components/Prose.tsx","../source/components/Steps.tsx","../source/components/Tabs.tsx","../source/components/Tooltip.tsx","../source/components/WebFrame.tsx","../source/components/Image.tsx","../source/mdx/primitives.tsx","../source/mdx/Markdown.tsx","../source/openapi/lib/helpers.ts","../source/openapi/lib/utils.ts","../source/openapi/components/EndpointMethodBadge.tsx","../source/components/HighlightedCode.tsx","../source/openapi/lib/request-code.ts","../source/openapi/components/SelectControl.tsx","../source/openapi/components/CodeDisplay.tsx","../source/openapi/components/helpers.ts","../source/openapi/components/ExamplePanels.tsx","../source/openapi/components/OpenApiDocumentSection.tsx","../source/openapi/components/OpenApiAuthDocumentation.tsx","../source/openapi/components/SchemaProperties.tsx","../source/openapi/components/SchemaSearch.tsx","../source/openapi/components/EndpointSections.tsx","../source/openapi/components/InlineListbox.tsx","../source/openapi/store.ts","../source/openapi/components/OpenApiOperation.state.ts","../source/openapi/lib/api-request.ts","../source/openapi/components/OpenApiAuthPanel.tsx","../source/openapi/components/OpenApiRequestBodyEditor.tsx","../source/openapi/components/OpenApiRequestFields.tsx","../source/openapi/components/OpenApiResponseViewer.tsx","../source/openapi/components/SendRequestButton.tsx","../source/openapi/lib/api-exchange.ts","../source/openapi/lib/request-parameters.ts","../source/openapi/components/useOpenApiRequestState.ts","../source/openapi/components/OpenApiRequest.tsx","../source/openapi/components/OpenApiOperation.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { Children, cloneElement, isValidElement, type ComponentPropsWithoutRef, type ReactElement, useState } from 'react'\n\nimport type { CollapseProps } from './Collapse'\n\nexport type AccordionGroupProps = {\n children?: ReactElement<CollapseProps> | ReactElement<CollapseProps>[]\n multiple?: boolean\n} & ComponentPropsWithoutRef<'div'>\n\nexport function AccordionGroup(arg0: AccordionGroupProps) {\n const { children, multiple = false, className, ...props } = arg0\n const childArray = Children.toArray(children)\n const [openIndex, setOpenIndex] = useState<number | null>(() => {\n const defaultIndex = childArray.findIndex((child) => isValidElement<CollapseProps>(child) && child.props.defaultOpen)\n return defaultIndex === -1 ? null : defaultIndex\n })\n\n const items = childArray.map((child, index) => {\n if (!isValidElement<CollapseProps>(child)) return child\n if (multiple) return child\n\n return cloneElement(child, {\n open: openIndex === index,\n onOpenChange: (open) => {\n child.props.onOpenChange?.(open)\n setOpenIndex(open ? index : null)\n },\n })\n })\n\n return (\n <div\n className={clsx(\n 'clarify-accordion-group my-6 divide-y divide-(--clarify-theme-tokens-colors-border) overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) [&_.clarify-collapse]:my-0 [&_.clarify-collapse]:rounded-none [&_.clarify-collapse]:border-0',\n className,\n )}\n {...props}\n >\n {items}\n </div>\n )\n}\n","import type { ComponentPropsWithoutRef } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { useConfig, useLocale } from '../core/context'\nimport { isExternalHref, localizeHref } from '../utils/href'\n\nexport function useLocalizedHref(href: string): string {\n const config = useConfig()\n const locale = useLocale()\n return localizeHref(href, config, locale)\n}\n\nexport type LocalizedLinkProps = ComponentPropsWithoutRef<'a'> & {\n href: string\n}\n\nexport function LocalizedLink(arg0: LocalizedLinkProps) {\n const { href, ...props } = arg0\n const localizedHref = useLocalizedHref(href)\n\n if (!isExternalHref(localizedHref) && !localizedHref.startsWith('#')) {\n return <Link to={localizedHref} {...props} />\n }\n\n return <a href={localizedHref} {...props} />\n}\n","import clsx from 'clsx'\nimport { ArrowRight } from 'lucide-react'\nimport type { ComponentPropsWithoutRef } from 'react'\n\nimport { LocalizedLink } from './LocalizedLink'\n\nconst buttonVariantStyles = {\n primary:\n 'bg-(--clarify-theme-tokens-colors-foreground) px-4 text-(--clarify-theme-tokens-colors-background) shadow-sm hover:-translate-y-px hover:shadow-md active:translate-y-0 active:shadow-sm dark:bg-(--clarify-theme-tokens-colors-primary) dark:text-zinc-950',\n secondary:\n 'bg-(--clarify-theme-tokens-colors-code-background) px-4 text-(--clarify-ui-text-soft) ring-1 ring-inset ring-(--clarify-theme-tokens-colors-border) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)',\n filled:\n 'bg-(--clarify-theme-tokens-colors-primary) px-4 text-white shadow-sm hover:-translate-y-px hover:shadow-md active:translate-y-0 dark:text-zinc-950',\n outline:\n 'px-4 text-(--clarify-ui-text-soft) ring-1 ring-inset ring-(--clarify-theme-tokens-colors-border) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)',\n text: 'text-(--clarify-theme-tokens-colors-primary) hover:opacity-80 dark:text-(--clarify-theme-tokens-colors-primary) dark:hover:opacity-80',\n}\n\nexport type ButtonProps = {\n variant?: keyof typeof buttonVariantStyles\n arrow?: 'left' | 'right'\n} & (\n | (ComponentPropsWithoutRef<'a'> & { href: string })\n | (ComponentPropsWithoutRef<'button'> & { href?: undefined })\n)\n\nexport function Button(arg0: ButtonProps) {\n const { variant = 'primary', className, children, arrow, ...props } = arg0\n\n const classes = clsx(\n 'clarify-button not-prose inline-flex w-fit max-w-full items-center justify-center gap-1.5 overflow-hidden align-middle text-sm font-semibold whitespace-nowrap no-underline transition duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) focus-visible:ring-offset-2 focus-visible:ring-offset-(--clarify-theme-tokens-colors-background)',\n variant === 'text' ? 'h-auto rounded-sm' : 'h-9 rounded-(--clarify-theme-tokens-radius-lg)',\n buttonVariantStyles[variant],\n className,\n )\n\n const arrowIcon = (\n <ArrowRight\n aria-hidden=\"true\"\n className={clsx(\n 'h-4 w-4 shrink-0',\n variant === 'text' && 'relative top-px',\n arrow === 'left' && '-ml-0.5 rotate-180',\n arrow === 'right' && '-mr-0.5',\n )}\n />\n )\n\n const inner = (\n <>\n {arrow === 'left' ? arrowIcon : null}\n <span className=\"truncate\">{children}</span>\n {arrow === 'right' ? arrowIcon : null}\n </>\n )\n\n if (typeof props.href === 'undefined') {\n return (\n <button className={classes} {...props}>\n {inner}\n </button>\n )\n }\n\n return (\n <LocalizedLink className={classes} {...props}>\n {inner}\n </LocalizedLink>\n )\n}\n","import clsx from 'clsx'\nimport { AlertTriangle, CheckCircle2, Info, Lightbulb, XCircle } from 'lucide-react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport { useBuiltInText } from '../core/i18n'\n\nexport type CalloutType = 'info' | 'note' | 'tip' | 'warning' | 'danger' | 'success'\n\ntype CalloutStyle = {\n container: string\n iconContainer: string\n icon: string\n title: string\n Icon: typeof Info\n}\n\nconst calloutStyles: Record<CalloutType, CalloutStyle> = {\n info: {\n container: 'border-sky-500/20 bg-sky-50/30 dark:border-sky-400/20 dark:bg-sky-400/5',\n iconContainer: 'bg-sky-100 ring-sky-500/15 dark:bg-sky-400/10 dark:ring-sky-400/20',\n icon: 'text-sky-600 dark:text-sky-400',\n title: 'text-sky-900 dark:text-sky-100',\n Icon: Info,\n },\n note: {\n container: 'border-zinc-500/20 bg-zinc-50/50 dark:border-white/10 dark:bg-white/5',\n iconContainer: 'bg-zinc-200/70 ring-zinc-500/15 dark:bg-white/10 dark:ring-white/10',\n icon: 'text-zinc-500 dark:text-zinc-400',\n title: 'text-zinc-900 dark:text-white',\n Icon: Info,\n },\n tip: {\n container: 'border-emerald-500/20 bg-emerald-50/30 dark:border-emerald-400/20 dark:bg-emerald-400/5',\n iconContainer: 'bg-emerald-100 ring-emerald-500/15 dark:bg-emerald-400/10 dark:ring-emerald-400/20',\n icon: 'text-emerald-600 dark:text-emerald-400',\n title: 'text-emerald-900 dark:text-emerald-100',\n Icon: Lightbulb,\n },\n warning: {\n container: 'border-amber-500/20 bg-amber-50/40 dark:border-amber-400/20 dark:bg-amber-400/5',\n iconContainer: 'bg-amber-100 ring-amber-500/15 dark:bg-amber-400/10 dark:ring-amber-400/20',\n icon: 'text-amber-600 dark:text-amber-400',\n title: 'text-amber-900 dark:text-amber-100',\n Icon: AlertTriangle,\n },\n danger: {\n container: 'border-rose-500/20 bg-rose-50/40 dark:border-rose-400/20 dark:bg-rose-400/5',\n iconContainer: 'bg-rose-100 ring-rose-500/15 dark:bg-rose-400/10 dark:ring-rose-400/20',\n icon: 'text-rose-600 dark:text-rose-400',\n title: 'text-rose-900 dark:text-rose-100',\n Icon: XCircle,\n },\n success: {\n container: 'border-emerald-500/20 bg-emerald-50/30 dark:border-emerald-400/20 dark:bg-emerald-400/5',\n iconContainer: 'bg-emerald-100 ring-emerald-500/15 dark:bg-emerald-400/10 dark:ring-emerald-400/20',\n icon: 'text-emerald-600 dark:text-emerald-400',\n title: 'text-emerald-900 dark:text-emerald-100',\n Icon: CheckCircle2,\n },\n}\n\nconst defaultTitleKeys: Record<CalloutType, Parameters<ReturnType<typeof useBuiltInText>>[0]> = {\n info: 'callout.info',\n note: 'callout.note',\n tip: 'callout.tip',\n warning: 'callout.warning',\n danger: 'callout.danger',\n success: 'callout.success',\n}\n\nexport type CalloutProps = {\n children: ReactNode\n type?: CalloutType\n title?: ReactNode\n icon?: boolean\n className?: string\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className' | 'title'>\n\nexport function Callout(arg0: CalloutProps) {\n const {\n children,\n type = 'info',\n title,\n icon = true,\n className,\n ...props\n } = arg0\n\n const t = useBuiltInText()\n const style = calloutStyles[type]\n const Icon = style.Icon\n const resolvedTitle = title === undefined ? t(defaultTitleKeys[type]) : title\n\n return (\n <div\n className={clsx(\n 'clarify-callout my-6 flex gap-3.5 rounded-(--clarify-theme-tokens-radius-lg) border p-4 text-sm/6 text-(--clarify-ui-text-soft)',\n style.container,\n className,\n )}\n {...props}\n >\n {icon ? (\n <span className={clsx('flex size-7 flex-none items-center justify-center rounded-(--clarify-theme-tokens-radius-md) ring-1 ring-inset', style.iconContainer)}>\n <Icon className={clsx('size-4', style.icon)} aria-hidden=\"true\" />\n </span>\n ) : null}\n <div className=\"min-w-0 flex-1 *:first:mt-0 *:last:mb-0\">\n {resolvedTitle ? <p className={clsx('mb-1.5 font-semibold', style.title)}>{resolvedTitle}</p> : null}\n <div className=\"*:first:mt-0 *:last:mb-0\">{children}</div>\n </div>\n </div>\n )\n}\n","import clsx from 'clsx'\nimport { ArrowUpRight } from 'lucide-react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport { lucideIconRegistry, resolveLucideIconName } from '../utils/lucide'\n\nimport { LocalizedLink } from './LocalizedLink'\n\ntype CardIconProps = { name?: string }\n\nfunction CardIcon(arg0: CardIconProps) {\n const { name } = arg0\n\n if (!name) return null\n\n const iconName = resolveLucideIconName(name)\n if (!iconName) return null\n\n const Icon = lucideIconRegistry[iconName]\n if (!Icon) return null\n\n return (\n <span className=\"flex size-8 flex-none items-center justify-center rounded-(--clarify-theme-tokens-radius-md) bg-(--clarify-ui-accent-background) text-(--clarify-ui-accent-text) ring-1 ring-inset ring-(--clarify-ui-accent-border) transition-colors group-hover:bg-(--clarify-theme-tokens-colors-primary) group-hover:text-white dark:group-hover:text-zinc-950\">\n <Icon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n )\n}\n\nexport type CardGroupProps = {\n children: ReactNode\n cols?: 1 | 2 | 3 | 4\n className?: string\n}\n\nconst cardGroupColumnStyles: Record<NonNullable<CardGroupProps['cols']>, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n}\n\nexport function CardGroup(arg0: CardGroupProps) {\n const { children, cols = 2, className } = arg0\n\n return (\n <div className={clsx('not-prose my-8 grid gap-3', cardGroupColumnStyles[cols], className)}>\n {children}\n </div>\n )\n}\n\nexport type CardProps = {\n title: string\n icon?: string\n href?: string\n children?: ReactNode\n className?: string\n} & Omit<ComponentPropsWithoutRef<'a'>, 'children' | 'className' | 'href' | 'title'>\n\nexport function Card(arg0: CardProps) {\n const { title, icon, href, children, className, ...props } = arg0\n\n const content = (\n <>\n <div className=\"flex items-start gap-4\">\n <CardIcon name={icon} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-3\">\n <h3 className=\"m-0 text-sm/6 font-semibold text-(--clarify-theme-tokens-colors-foreground)\">{title}</h3>\n {href ? <ArrowUpRight className=\"mt-1 size-3.5 shrink-0 text-(--clarify-ui-text-faint) transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5 group-hover:text-(--clarify-ui-accent-text)\" aria-hidden=\"true\" /> : null}\n </div>\n {children ? (\n <div className=\"mt-1.5 text-sm/6 text-(--clarify-ui-text-soft) *:m-0\">\n {children}\n </div>\n ) : null}\n </div>\n </div>\n {href ? <span className=\"absolute inset-0 rounded-(--clarify-theme-tokens-radius-xl)\" aria-hidden=\"true\" /> : null}\n </>\n )\n\n const classes = clsx(\n 'group relative block rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-4 transition duration-200',\n href && 'hover:-translate-y-0.5 hover:border-(--clarify-ui-accent-border) hover:shadow-md hover:shadow-zinc-900/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) focus-visible:ring-offset-2 dark:hover:shadow-none',\n className,\n )\n\n if (!href) {\n return <div className={classes}>{content}</div>\n }\n\n return (\n <LocalizedLink href={href} className={classes} {...props}>\n {content}\n </LocalizedLink>\n )\n}\n","import clsx from 'clsx'\nimport { lazy, Suspense, useEffect, useId, useState, type ReactNode } from 'react'\n\nimport { useBuiltInText } from '../core/i18n'\nimport { useTheme } from '../theme/ThemeProvider'\n\nconst MermaidViewer = lazy(() => import('./MermaidViewer'))\n\ntype MermaidProps = {\n chart: string\n className?: string\n}\n\n// A single shared promise so the (fairly large) mermaid bundle is only loaded\n// once and only on the client, the first time a diagram becomes visible.\nlet mermaidModulePromise: Promise<typeof import('mermaid').default> | undefined\n\nasync function loadMermaid() {\n mermaidModulePromise = mermaidModulePromise ?? import('mermaid').then((module) => module.default)\n return mermaidModulePromise\n}\n\nexport function Mermaid(arg0: MermaidProps): ReactNode {\n const { chart, className } = arg0\n\n const t = useBuiltInText()\n const { resolvedTheme } = useTheme()\n const reactId = useId()\n const renderId = `clarify-mermaid-${reactId.replace(/[^a-zA-Z0-9]/g, '')}`\n const [svg, setSvg] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n useEffect(() => {\n let cancelled = false\n\n async function renderChart() {\n const source = chart.trim()\n if (!source) {\n setSvg('')\n setError(undefined)\n return\n }\n\n try {\n const mermaid = await loadMermaid()\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: 'strict',\n theme: resolvedTheme === 'dark' ? 'dark' : 'default',\n fontFamily: 'inherit',\n })\n const { svg: renderedSvg } = await mermaid.render(renderId, source)\n if (!cancelled) {\n setSvg(renderedSvg)\n setError(undefined)\n }\n } catch (renderError) {\n if (!cancelled) {\n setSvg('')\n setError(renderError instanceof Error ? renderError.message : String(renderError))\n }\n }\n }\n\n void renderChart()\n\n return () => {\n cancelled = true\n }\n }, [chart, renderId, resolvedTheme])\n\n if (error) {\n return (\n <div className={clsx('clarify-mermaid clarify-mermaid-error my-6 overflow-x-auto rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4', className)}>\n <p className=\"text-sm font-semibold text-(--clarify-error-accent-text)\">{t('mermaid.renderError')}</p>\n <pre className=\"mt-2 text-xs whitespace-pre-wrap text-(--clarify-ui-text-soft)\">{error}</pre>\n <pre className=\"mt-2 text-xs whitespace-pre-wrap text-(--clarify-ui-text-faint)\">{chart.trim()}</pre>\n </div>\n )\n }\n\n if (!svg) {\n // Before hydration / while loading, keep the raw source visible so the\n // diagram still conveys information and the layout does not jump abruptly.\n return (\n <div className={clsx('clarify-mermaid clarify-mermaid-loading not-prose my-6 overflow-x-auto rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-4', className)}>\n <pre className=\"text-xs text-(--clarify-ui-text-soft)\">{chart.trim()}</pre>\n </div>\n )\n }\n\n return (\n <Suspense fallback={<MermaidStaticSvg svg={svg} className={className} />}>\n <MermaidViewer svg={svg} className={className} />\n </Suspense>\n )\n}\n\ntype MermaidStaticSvgProps = { svg: string; className?: string }\n\nfunction MermaidStaticSvg(arg0: MermaidStaticSvgProps): ReactNode {\n const { svg, className } = arg0\n\n return (\n <div className={clsx('clarify-mermaid not-prose my-6 overflow-x-auto rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-4', className)}>\n <div className=\"flex w-full justify-center [&_svg]:h-auto [&_svg]:max-w-full\" dangerouslySetInnerHTML={{ __html: svg }} />\n </div>\n )\n}\n","import { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { motion } from 'framer-motion'\nimport { Check, Clipboard } from 'lucide-react'\nimport {\n Children,\n createContext,\n isValidElement,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react'\nimport { create } from 'zustand'\n\nimport { useBuiltInText } from '../core/i18n'\nimport { copyTextToClipboard } from '../utils/clipboard'\n\nimport { Mermaid } from './Mermaid'\n\nconst languageNames: Record<string, string> = {\n js: 'JavaScript',\n ts: 'TypeScript',\n jsx: 'React JSX',\n tsx: 'React TSX',\n javascript: 'JavaScript',\n typescript: 'TypeScript',\n php: 'PHP',\n python: 'Python',\n ruby: 'Ruby',\n go: 'Go',\n bash: 'Shell',\n sh: 'Shell',\n shell: 'Shell',\n json: 'JSON',\n}\n\ntype GetPanelTitleArgs = { title?: string; language?: string; fallbackTitle?: string }\n\nfunction getPanelTitle(arg0: GetPanelTitleArgs) { const { title, language, fallbackTitle = 'Code' } = arg0\n\n if (title) return title\n if (language && language in languageNames) return languageNames[language]\n return fallbackTitle\n}\n\nfunction getNodeText(node: ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') return String(node)\n if (Array.isArray(node)) return node.map(getNodeText).join('')\n if (isValidElement(node)) return getNodeText((node.props as { children?: ReactNode }).children)\n return ''\n}\n\nfunction getCodeTitle(node: ReactNode): string | undefined {\n if (!isValidElement(node)) return undefined\n\n const { title, children } = node.props as { title?: string; children?: ReactNode }\n if (title) return title\n\n return Children.toArray(children).map(getCodeTitle).find(Boolean)\n}\n\nfunction getCodeLanguage(node: ReactNode): string | undefined {\n if (!isValidElement(node)) return undefined\n\n const { className, language, children } = node.props as { className?: string; language?: string; children?: ReactNode }\n if (language) return language\n\n const languageClass = className?.split(/\\s+/).find(value => value.startsWith('language-'))\n if (languageClass) return languageClass.slice('language-'.length)\n\n return Children.toArray(children).map(getCodeLanguage).find(Boolean)\n}\n\nfunction getCodePanelTitle(node: ReactNode, fallbackTitle: string): string {\n return getPanelTitle({\n title: getCodeTitle(node),\n language: getCodeLanguage(node),\n fallbackTitle,\n })\n}\n\ntype CopyButtonProps = { code: string }\n\nfunction CopyButton(arg0: CopyButtonProps) { const { code } = arg0\n\n const t = useBuiltInText()\n const [copyCount, setCopyCount] = useState(0)\n const copied = copyCount > 0\n\n useEffect(() => {\n if (copyCount === 0) return undefined\n const timeout = setTimeout(() => setCopyCount(0), 1000)\n return () => clearTimeout(timeout)\n }, [copyCount])\n\n if (!code) return null\n\n return (\n <button\n type=\"button\"\n className={clsx(\n 'clarify-code-copy group/button absolute top-3.5 right-4 inline-flex items-center gap-1 overflow-hidden rounded-full border border-(--clarify-code-border) py-1 pr-3 pl-2 text-2xs font-medium whitespace-nowrap opacity-100 shadow-sm backdrop-blur-sm transition sm:opacity-0 sm:group-hover:opacity-100 focus:opacity-100',\n copied ? 'clarify-code-copy-copied text-(--clarify-code-text)' : 'bg-(--clarify-code-control-background) text-(--clarify-code-text) hover:bg-(--clarify-code-control-background-hover)',\n )}\n onClick={() => {\n void copyTextToClipboard(code).then((ok) => {\n if (ok) setCopyCount((count) => count + 1)\n })\n }}\n >\n {copied ? (\n <>\n <Check className=\"h-3.5 w-3.5 stroke-(--clarify-theme-tokens-colors-primary)\" />\n {t('actions.copied')}\n </>\n ) : (\n <>\n <Clipboard className=\"h-3.5 w-3.5 stroke-(--clarify-code-muted) transition-colors group-hover/button:stroke-(--clarify-code-text)\" />\n {t('actions.copy')}\n </>\n )}\n </button>\n )\n}\n\ntype CodePanelHeaderProps = { tag?: string; label?: string }\n\nfunction CodePanelHeader(arg0: CodePanelHeaderProps) { const { tag, label } = arg0\n\n if (!tag && !label) return null\n\n return (\n <div className=\"clarify-code-panel-header flex h-9 items-center gap-2 border-y border-(--clarify-code-border) border-t-transparent bg-(--clarify-code-background) px-4\">\n {tag ? <span className=\"clarify-code-panel-tag font-semibold text-(--clarify-theme-tokens-colors-primary)\">{tag}</span> : null}\n {tag && label ? <span className=\"h-0.5 w-0.5 rounded-full bg-(--clarify-code-faint)\" /> : null}\n {label ? <span className=\"truncate text-xs text-(--clarify-code-muted)\">{label}</span> : null}\n </div>\n )\n}\n\ntype CodePanelProps = {\n children: ReactNode\n tag?: string\n label?: string\n code?: string\n}\n\nfunction CodePanel(arg0: CodePanelProps) {\n const { children } = arg0\n let { tag, label, code } = arg0\n\n const child = Children.only(children)\n\n if (isValidElement(child)) {\n const props = child.props as { tag?: string; label?: string; code?: string; children?: ReactNode }\n tag = props.tag ?? tag\n label = props.label ?? label\n code = props.code ?? code ?? getNodeText(props.children)\n }\n\n const copyText = code ?? getNodeText(children)\n\n return (\n <div className=\"clarify-code-panel group bg-(--clarify-code-background)\">\n <CodePanelHeader tag={tag} label={label} />\n <div className=\"relative\">\n <pre className=\"clarify-code-pre overflow-x-auto p-4 text-xs text-(--clarify-code-text)\">{children}</pre>\n <CopyButton code={copyText} />\n </div>\n </div>\n )\n}\n\ntype CodeGroupHeaderProps = { title?: string; children: ReactNode; selectedIndex: number }\n\nfunction CodeGroupHeader(arg0: CodeGroupHeaderProps) { const { title, children, selectedIndex } = arg0\n\n const t = useBuiltInText()\n const hasTabs = Children.count(children) > 1\n const indicatorLayoutId = useId()\n\n if (!title && !hasTabs) return null\n\n return (\n <div className=\"clarify-code-group-header flex min-h-(--clarify-code-header-min-height) flex-wrap items-start gap-x-4 border-b border-(--clarify-code-border) bg-(--clarify-code-header-background) px-4\">\n {title ? <h3 className=\"mr-auto pt-3 text-xs font-semibold text-(--clarify-code-text)\">{title}</h3> : null}\n {hasTabs ? (\n <TabList className=\"clarify-code-tabs -mr-2 -mb-px flex gap-0 text-xs font-medium\">\n {Children.map(children, (child, childIndex) => (\n <Tab\n className={clsx(\n 'clarify-code-tab relative border-b border-transparent px-2 py-3 transition-colors hover:bg-(--clarify-code-control-background-hover) data-selected:not-data-focus:outline-hidden',\n childIndex === selectedIndex\n ? 'text-(--clarify-code-accent-text)'\n : 'text-(--clarify-code-control-text) hover:text-(--clarify-code-text)',\n )}\n >\n {getCodePanelTitle(child, t('actions.code'))}\n {childIndex === selectedIndex ? (\n <motion.span\n layoutId={indicatorLayoutId}\n className=\"absolute inset-x-2 bottom-0 h-0.5 rounded-full bg-(--clarify-code-accent-text)\"\n transition={{ type: 'spring', stiffness: 460, damping: 34, mass: 0.7 }}\n />\n ) : null}\n </Tab>\n ))}\n </TabList>\n ) : null}\n </div>\n )\n}\n\ntype CodeGroupPanelsProps = ComponentPropsWithoutRef<typeof CodePanel>\n\nfunction CodeGroupPanels(arg0: CodeGroupPanelsProps) {\n const { children, ...props } = arg0\n\n const hasTabs = Children.count(children) > 1\n\n if (hasTabs) {\n return (\n <TabPanels>\n {Children.map(children, (child) => (\n <TabPanel static className=\"hidden data-selected:block\">\n <CodePanel {...props}>{child}</CodePanel>\n </TabPanel>\n ))}\n </TabPanels>\n )\n }\n\n return <CodePanel {...props}>{children}</CodePanel>\n}\n\nfunction usePreventLayoutShift() {\n const positionRef = useRef<HTMLElement>(null)\n const rafRef = useRef<number | undefined>(undefined)\n\n useEffect(() => {\n return () => {\n if (typeof rafRef.current !== 'undefined') window.cancelAnimationFrame(rafRef.current)\n }\n }, [])\n\n return {\n positionRef,\n preventLayoutShift(callback: () => void) {\n if (!positionRef.current) return\n\n const initialTop = positionRef.current.getBoundingClientRect().top\n callback()\n\n rafRef.current = window.requestAnimationFrame(() => {\n const newTop = positionRef.current?.getBoundingClientRect().top ?? initialTop\n window.scrollBy(0, newTop - initialTop)\n })\n },\n }\n}\n\nconst usePreferredLanguageStore = create<{\n preferredLanguages: string[]\n addPreferredLanguage: (language: string) => void\n}>()((set) => ({\n preferredLanguages: [],\n addPreferredLanguage: (language) =>\n set((state) => ({\n preferredLanguages: [...state.preferredLanguages.filter((preferredLanguage) => preferredLanguage !== language), language],\n })),\n}))\n\nfunction useTabGroupProps(availableLanguages: string[]) {\n const { preferredLanguages, addPreferredLanguage } = usePreferredLanguageStore()\n const [selectedIndex, setSelectedIndex] = useState(0)\n\n // Only sync the selection from the globally preferred language when the\n // languages are unambiguous (each appears at most once). When languages\n // collide (e.g. two `bash` panels), index resolution by language name would\n // always return the first match and break tab switching, so we rely on the\n // local selection instead.\n const languagesAreUnique = new Set(availableLanguages).size === availableLanguages.length\n if (languagesAreUnique) {\n const activeLanguage = [...availableLanguages].sort(\n (a, z) => preferredLanguages.indexOf(z) - preferredLanguages.indexOf(a),\n )[0]\n const languageIndex = availableLanguages.indexOf(activeLanguage)\n const newSelectedIndex = languageIndex === -1 ? selectedIndex : languageIndex\n\n if (newSelectedIndex !== selectedIndex) setSelectedIndex(newSelectedIndex)\n }\n\n const { positionRef, preventLayoutShift } = usePreventLayoutShift()\n\n return {\n as: 'div' as const,\n ref: positionRef,\n selectedIndex,\n onChange: (nextSelectedIndex: number) => {\n setSelectedIndex(nextSelectedIndex)\n preventLayoutShift(() => addPreferredLanguage(availableLanguages[nextSelectedIndex]))\n },\n }\n}\n\nconst CodeGroupContext = createContext(false)\n\ntype CodeGroupProps = ComponentPropsWithoutRef<typeof CodeGroupPanels> & { title?: string }\n\nexport function CodeGroup(arg0: CodeGroupProps) { const {\n children,\n title,\n ...props\n} = arg0\n\n const t = useBuiltInText()\n const languages =\n Children.map(children, (child) => getCodePanelTitle(child, t('actions.code'))) ?? []\n const tabGroupProps = useTabGroupProps(languages)\n const hasTabs = Children.count(children) > 1\n const containerClassName = 'clarify-code-group my-6 overflow-hidden rounded-2xl bg-(--clarify-code-background) shadow-md ring-1 ring-(--clarify-code-border)'\n const header = (\n <CodeGroupHeader title={title} selectedIndex={tabGroupProps.selectedIndex}>\n {children}\n </CodeGroupHeader>\n )\n const panels = <CodeGroupPanels {...props}>{children}</CodeGroupPanels>\n\n return (\n <CodeGroupContext.Provider value={true}>\n {hasTabs ? (\n <TabGroup {...tabGroupProps} className={containerClassName}>\n <div className=\"not-prose\">\n {header}\n {panels}\n </div>\n </TabGroup>\n ) : (\n <div className={containerClassName}>\n <div className=\"not-prose\">\n {header}\n {panels}\n </div>\n </div>\n )}\n </CodeGroupContext.Provider>\n )\n}\n\ntype CodeProps = ComponentPropsWithoutRef<'code'> & { code?: string; language?: string; title?: string }\n\nexport function Code(arg0: CodeProps) { const { children, ...props } = arg0\n\n const isGrouped = useContext(CodeGroupContext)\n\n if (isGrouped && typeof children === 'string') {\n return <code {...props} dangerouslySetInnerHTML={{ __html: children }} />\n }\n\n return <code {...props}>{children}</code>\n}\n\ntype PreProps = ComponentPropsWithoutRef<typeof CodeGroup> & { language?: string; code?: string }\n\nexport function Pre(arg0: PreProps) { const { children, language, code, ...props } = arg0\n\n const isGrouped = useContext(CodeGroupContext)\n const resolvedLanguage = language ?? getCodeLanguage(children)\n const resolvedCode = code ?? getNodeText(children)\n\n if (resolvedLanguage === 'mermaid') {\n return <Mermaid chart={resolvedCode} />\n }\n\n if (isGrouped) return children\n\n return <CodeGroup {...props}>{children}</CodeGroup>\n}\n","import clsx from 'clsx'\nimport { ChevronDown } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, type ReactNode, useId, useLayoutEffect, useRef, useState } from 'react'\n\nexport type CollapseProps = {\n children?: ReactNode\n title?: ReactNode\n summary?: ReactNode\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n className?: string\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'>\n\nexport function Collapse(arg0: CollapseProps) {\n const { children, title, summary, defaultOpen = false, open: controlledOpen, onOpenChange, className, ...props } = arg0\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen)\n const open = controlledOpen ?? uncontrolledOpen\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [maxHeight, setMaxHeight] = useState('0px')\n const summaryLabel = title ?? summary ?? 'Details'\n const contentId = useId()\n\n useLayoutEffect(() => {\n if (!contentRef.current) return\n setMaxHeight(open ? `${contentRef.current.scrollHeight}px` : '0px')\n }, [open, children])\n\n return (\n <div\n className={clsx(\n 'clarify-collapse my-6 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) transition-colors',\n open && 'border-(--clarify-ui-accent-border)',\n className,\n )}\n {...props}\n >\n <button\n type=\"button\"\n className=\"flex min-h-11 w-full cursor-pointer items-center justify-between gap-3 px-4 py-2.5 text-left text-sm font-semibold text-(--clarify-theme-tokens-colors-foreground) transition hover:bg-(--clarify-ui-hover-background) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)\"\n aria-expanded={open}\n aria-controls={contentId}\n onClick={() => {\n const nextOpen = !open\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen)\n onOpenChange?.(nextOpen)\n }}\n >\n <span>{summaryLabel}</span>\n <ChevronDown\n className={clsx(\n 'size-4 rounded-full text-(--clarify-ui-text-faint) transition duration-200',\n open && 'rotate-180',\n )}\n aria-hidden=\"true\"\n />\n </button>\n <div\n id={contentId}\n className=\"clarify-collapse-content overflow-hidden border-t border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background) duration-200 ease-out\"\n style={{ maxHeight, willChange: 'max-height, opacity, transform' }}\n >\n <div\n ref={contentRef}\n className={clsx(\n 'px-4 py-4 text-sm/6 text-(--clarify-ui-text-soft) transition-opacity duration-200 ease-out *:first:mt-0 *:last:mb-0',\n open ? 'opacity-100 translate-y-0' : 'opacity-0 -translate-y-1',\n )}\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n","import { Transition } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { CircleCheck } from 'lucide-react'\nimport { forwardRef, useState } from 'react'\nimport type { ComponentPropsWithoutRef, ElementRef, FormEvent } from 'react'\n\nimport { useBuiltInText } from '../core/i18n'\n\nfunction FeedbackButton(props: Omit<ComponentPropsWithoutRef<'button'>, 'type' | 'className'>) {\n return (\n <button\n type=\"submit\"\n className=\"clarify-feedback-button px-3 text-sm font-medium text-(--clarify-ui-text-soft) transition hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)\"\n {...props}\n />\n )\n}\n\nconst FeedbackForm = forwardRef<ElementRef<'form'>, ComponentPropsWithoutRef<'form'>>(function FeedbackForm(arg0, ref,) { const { onSubmit, className, ...props } = arg0\n const t = useBuiltInText()\n\n return (\n <form\n {...props}\n ref={ref}\n onSubmit={onSubmit}\n className={clsx(className, 'clarify-feedback-form absolute inset-0 flex items-center justify-center gap-6 md:justify-start')}\n >\n <p className=\"text-sm text-(--clarify-ui-text-soft)\">{t('feedback.prompt')}</p>\n <div className=\"clarify-feedback-actions group grid h-8 grid-cols-(--clarify-feedback-actions-grid) overflow-hidden rounded-full border border-(--clarify-theme-tokens-colors-border)\">\n <FeedbackButton data-response=\"yes\">{t('feedback.yes')}</FeedbackButton>\n <div className=\"bg-(--clarify-theme-tokens-colors-border)\" />\n <FeedbackButton data-response=\"no\">{t('feedback.no')}</FeedbackButton>\n </div>\n </form>\n )\n})\n\nconst FeedbackThanks = forwardRef<ElementRef<'div'>, ComponentPropsWithoutRef<'div'>>(function FeedbackThanks(arg0, ref,) { const { className, ...props } = arg0\n const t = useBuiltInText()\n\n return (\n <div {...props} ref={ref} className={clsx(className, 'clarify-feedback-thanks absolute inset-0 flex justify-center md:justify-start')}>\n <div className=\"flex items-center gap-3 rounded-full bg-(--clarify-ui-accent-background) py-1 pr-3 pl-1.5 text-sm text-(--clarify-ui-accent-text) ring-1 ring-(--clarify-ui-accent-border) ring-inset\">\n <CircleCheck className=\"h-5 w-5 flex-none stroke-(--clarify-ui-accent-text)\" />\n {t('feedback.thanks')}\n </div>\n </div>\n )\n})\n\nexport function Feedback() {\n const [submitted, setSubmitted] = useState(false)\n\n function onSubmit(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n setSubmitted(true)\n }\n\n return (\n <div className=\"clarify-feedback relative h-8\">\n <Transition show={!submitted}>\n <FeedbackForm className=\"duration-300 data-closed:opacity-0 data-leave:pointer-events-none\" onSubmit={onSubmit} />\n </Transition>\n <Transition show={submitted}>\n <FeedbackThanks className=\"delay-150 duration-300 data-closed:opacity-0\" />\n </Transition>\n </div>\n )\n}\n","import clsx from 'clsx'\nimport { File, Folder, FolderOpen } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, type ReactNode } from 'react'\n\nexport type FileTreeProps = ComponentPropsWithoutRef<'div'>\n\nexport function FileTree(arg0: FileTreeProps) {\n const { children, className, ...props } = arg0\n\n return (\n <div\n className={clsx(\n 'clarify-file-tree not-prose my-6 overflow-x-auto rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-4 py-3 font-mono text-[13px]/6 text-(--clarify-ui-text-soft)',\n className,\n )}\n {...props}\n >\n <ul role=\"tree\" className=\"m-0 min-w-max list-none p-0\">{children}</ul>\n </div>\n )\n}\n\nexport type FileTreeItemProps = {\n name: ReactNode\n description?: ReactNode\n type?: 'file' | 'folder'\n children?: ReactNode\n} & Omit<ComponentPropsWithoutRef<'li'>, 'children'>\n\nexport function FileTreeItem(arg0: FileTreeItemProps) {\n const { name, description, type, children, className, ...props } = arg0\n const isFolder = type === 'folder' || children != null\n const FolderIcon = children ? FolderOpen : Folder\n\n return (\n <li\n role=\"treeitem\"\n aria-expanded={isFolder ? children != null : undefined}\n className={clsx('clarify-file-tree-item m-0 p-0', className)}\n {...props}\n >\n <div className=\"flex min-h-6 items-center gap-2 whitespace-nowrap\">\n {isFolder ? (\n <FolderIcon className=\"size-4 flex-none text-(--clarify-ui-accent-text)\" aria-hidden=\"true\" />\n ) : (\n <File className=\"size-4 flex-none text-(--clarify-ui-text-faint)\" aria-hidden=\"true\" />\n )}\n <span className=\"font-medium text-(--clarify-theme-tokens-colors-foreground)\">{name}</span>\n {description ? <span className=\"font-sans text-xs text-(--clarify-ui-text-faint)\">{description}</span> : null}\n </div>\n {children ? (\n <ul role=\"group\" className=\"m-0 ml-2.5 list-none border-l border-(--clarify-theme-tokens-colors-border) pl-4\">\n {children}\n </ul>\n ) : null}\n </li>\n )\n}\n","import clsx from 'clsx'\nimport type { ReactNode } from 'react'\n\nconst tagVariantStyles = {\n small: '',\n medium: 'rounded-lg px-1.5 ring-1 ring-inset',\n}\n\nconst tagColorStyles = {\n emerald: {\n small: 'text-emerald-500 dark:text-emerald-400',\n medium: 'bg-emerald-400/10 text-emerald-500 ring-emerald-300 dark:text-emerald-400 dark:ring-emerald-400/30',\n },\n sky: {\n small: 'text-sky-500 dark:text-sky-400',\n medium: 'bg-sky-400/10 text-sky-500 ring-sky-300 dark:text-sky-400 dark:ring-sky-400/30',\n },\n amber: {\n small: 'text-amber-500 dark:text-amber-400',\n medium: 'bg-amber-400/10 text-amber-500 ring-amber-300 dark:text-amber-400 dark:ring-amber-400/30',\n },\n rose: {\n small: 'text-red-500 dark:text-rose-500',\n medium: 'bg-rose-50 text-red-500 ring-rose-200 dark:bg-rose-400/10 dark:text-rose-400 dark:ring-rose-500/20',\n },\n zinc: {\n small: 'text-(--clarify-theme-tokens-colors-muted)',\n medium: 'bg-(--clarify-theme-tokens-colors-code-background) text-(--clarify-theme-tokens-colors-muted) ring-(--clarify-theme-tokens-colors-border)',\n },\n}\n\nconst tagValueColorMap: Record<string, keyof typeof tagColorStyles> = {\n GET: 'emerald',\n POST: 'sky',\n PUT: 'amber',\n PATCH: 'amber',\n DELETE: 'rose',\n}\n\nexport type TagProps = {\n children: ReactNode\n variant?: keyof typeof tagVariantStyles\n color?: keyof typeof tagColorStyles\n}\n\nexport function Tag(arg0: TagProps) {\n const { children, variant = 'medium', color } = arg0\n\n const value = typeof children === 'string' ? children.toUpperCase() : ''\n const resolvedColor = color ?? tagValueColorMap[value] ?? 'emerald'\n\n return (\n <span\n className={clsx(\n 'clarify-tag font-bold',\n tagVariantStyles[variant],\n tagColorStyles[resolvedColor][variant],\n )}\n >\n {children}\n </span>\n )\n}\n","import clsx from 'clsx'\nimport { useInView } from 'framer-motion'\nimport { LinkIcon } from 'lucide-react'\nimport { useEffect, useRef } from 'react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport { useSectionStore } from '../app/SectionProvider'\nimport { remToPx } from '../utils/remToPx'\n\nimport { Tag } from './Tag'\n\ntype EyebrowProps = { tag?: string; label?: string }\n\nfunction Eyebrow(arg0: EyebrowProps) {\n const { tag, label } = arg0\n\n if (!tag && !label) {\n return null\n }\n\n return (\n <div className=\"flex items-center gap-x-3\">\n {tag ? <Tag>{tag}</Tag> : null}\n {tag && label ? <span className=\"h-0.5 w-0.5 rounded-full bg-zinc-300 dark:bg-zinc-600\" /> : null}\n {label ? <span className=\"text-xs text-zinc-400\">{label}</span> : null}\n </div>\n )\n}\n\ntype AnchorProps = { id: string; inView: boolean; children: ReactNode }\n\nfunction Anchor(arg0: AnchorProps) {\n const { id, inView, children } = arg0\n\n return (\n <a href={`#${id}`} className=\"clarify-anchor group text-inherit no-underline hover:text-inherit\">\n {inView ? (\n <div className=\"absolute mt-1 -ml-(--width) hidden w-(--width) opacity-0 transition [--width:var(--clarify-heading-anchor-width)] group-hover:opacity-100 group-focus:opacity-100 md:block lg:z-50 2xl:[--width:var(--clarify-heading-anchor-width-wide)]\">\n <LinkIcon className=\"h-5 w-5 text-(--clarify-theme-tokens-colors-primary) opacity-80 transition group-hover:opacity-100\" />\n </div>\n ) : null}\n {children}\n </a>\n )\n}\n\ntype HeadingProps<Level extends 2 | 3> = ComponentPropsWithoutRef<`h${Level}`> & {\n id: string\n tag?: string\n label?: string\n level?: Level\n anchor?: boolean\n}\n\nexport function Heading<Level extends 2 | 3>(arg0: HeadingProps<Level>) {\n const { children, className, tag, label, level, anchor = true, ...props } = arg0\n\n const resolvedLevel = level ?? (2 as Level)\n const Component = `h${resolvedLevel}` as 'h2' | 'h3'\n const ref = useRef<HTMLHeadingElement>(null)\n const registerHeading = useSectionStore((state) => state.registerHeading)\n\n const inView = useInView(ref, {\n margin: `${remToPx(-3.5)}px 0px 0px 0px`,\n amount: 'all',\n })\n\n useEffect(() => {\n registerHeading({\n id: props.id,\n ref,\n offsetRem: tag || label ? 8 : 6,\n })\n }, [label, props.id, registerHeading, resolvedLevel, tag])\n\n return (\n <>\n <Eyebrow tag={tag} label={label} />\n <Component ref={ref} className={clsx('clarify-heading', tag || label ? 'mt-2 scroll-mt-32' : 'scroll-mt-24', className)} {...props}>\n {anchor ? (\n <Anchor id={props.id} inView={inView}>\n {children}\n </Anchor>\n ) : (\n children\n )}\n </Component>\n </>\n )\n}\n","import clsx from 'clsx'\nimport type { ComponentPropsWithoutRef } from 'react'\n\nexport function Logo(props: ComponentPropsWithoutRef<'svg'>) {\n return (\n <svg viewBox=\"0 0 99 24\" aria-hidden=\"true\" {...props} className={clsx('clarify-logo', props.className)}>\n <path\n className=\"fill-(--clarify-theme-tokens-colors-primary)\"\n d=\"M16 8a5 5 0 0 0-5-5H5a5 5 0 0 0-5 5v13.927a1 1 0 0 0 1.623.782l3.684-2.93a4 4 0 0 1 2.49-.87H11a5 5 0 0 0 5-5V8Z\"\n />\n <path\n className=\"fill-(--clarify-theme-tokens-colors-foreground) dark:fill-white\"\n d=\"M26.538 18h2.654v-3.999h2.576c2.672 0 4.456-1.723 4.456-4.333V9.65c0-2.61-1.784-4.333-4.456-4.333h-5.23V18Zm4.58-10.582c1.52 0 2.416.8 2.416 2.241v.018c0 1.441-.896 2.25-2.417 2.25h-1.925V7.418h1.925ZM38.051 18h2.566v-5.414c0-1.371.923-2.206 2.382-2.206.396 0 .791.061 1.178.15V8.287a3.843 3.843 0 0 0-.958-.123c-1.257 0-2.136.615-2.443 1.661h-.159V8.323h-2.566V18Zm11.55.202c2.979 0 4.772-1.88 4.772-5.036v-.018c0-3.128-1.82-5.036-4.773-5.036-2.953 0-4.772 1.916-4.772 5.036v.018c0 3.146 1.793 5.036 4.772 5.036Zm0-2.013c-1.372 0-2.145-1.116-2.145-3.023v-.018c0-1.89.782-3.023 2.144-3.023 1.354 0 2.145 1.134 2.145 3.023v.018c0 1.907-.782 3.023-2.145 3.023Zm10.52 1.846c.492 0 .967-.053 1.283-.114v-1.907a6.057 6.057 0 0 1-.755.044c-.87 0-1.24-.387-1.24-1.257v-4.544h1.995V8.323H59.41V6.012h-2.592v2.311h-1.495v1.934h1.495v5.133c0 1.88.949 2.645 3.304 2.645Zm7.287.167c2.98 0 4.772-1.88 4.772-5.036v-.018c0-3.128-1.82-5.036-4.772-5.036-2.954 0-4.773 1.916-4.773 5.036v.018c0 3.146 1.793 5.036 4.773 5.036Zm0-2.013c-1.372 0-2.145-1.116-2.145-3.023v-.018c0-1.89.782-3.023 2.145-3.023 1.353 0 2.144 1.134 2.144 3.023v.018c0 1.907-.782 3.023-2.144 3.023Zm10.767 2.013c2.522 0 4.034-1.353 4.297-3.463l.01-.053h-2.374l-.017.036c-.229.966-.853 1.467-1.908 1.467-1.37 0-2.135-1.08-2.135-3.04v-.018c0-1.934.755-3.006 2.135-3.006 1.099 0 1.74.615 1.908 1.556l.008.017h2.391v-.026c-.228-2.162-1.749-3.56-4.315-3.56-3.033 0-4.738 1.837-4.738 5.019v.017c0 3.217 1.714 5.054 4.738 5.054Zm10.257 0c2.98 0 4.772-1.88 4.772-5.036v-.018c0-3.128-1.82-5.036-4.772-5.036-2.953 0-4.773 1.916-4.773 5.036v.018c0 3.146 1.793 5.036 4.773 5.036Zm0-2.013c-1.371 0-2.145-1.116-2.145-3.023v-.018c0-1.89.782-3.023 2.145-3.023 1.353 0 2.144 1.134 2.144 3.023v.018c0 1.907-.782 3.023-2.144 3.023ZM95.025 18h2.566V4.623h-2.566V18Z\"\n />\n </svg>\n )\n}\n","import { useId } from 'react'\nimport type { ComponentPropsWithoutRef } from 'react'\n\ntype GridPatternProps = ComponentPropsWithoutRef<'svg'> & {\n width: number\n height: number\n x: string | number\n y: string | number\n squares?: Array<[x: number, y: number]>\n}\n\nexport function GridPattern(arg0: GridPatternProps) { const {\n width,\n height,\n x,\n y,\n squares,\n ...props\n} = arg0\n\n const patternId = useId()\n\n return (\n <svg aria-hidden=\"true\" {...props}>\n <defs>\n <pattern id={patternId} width={width} height={height} patternUnits=\"userSpaceOnUse\" x={x} y={y}>\n <path d={`M.5 ${height}V.5H${width}`} fill=\"none\" />\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" strokeWidth={0} fill={`url(#${patternId})`} />\n {squares ? (\n <svg x={x} y={y} className=\"overflow-visible\">\n {squares.map(([squareX, squareY]) => (\n <rect\n key={`${squareX}-${squareY}`}\n width={width + 1}\n height={height + 1}\n x={squareX * width}\n y={squareY * height}\n strokeWidth=\"0\"\n />\n ))}\n </svg>\n ) : null}\n </svg>\n )\n}\n\nexport function HeroPattern() {\n return (\n <div className=\"absolute inset-0 -z-10 mx-0 max-w-none overflow-hidden\">\n <div className=\"clarify-hero-pattern-mask absolute top-0 left-1/2 -ml-152 h-100 w-325\">\n <div className=\"clarify-hero-pattern-gradient absolute inset-0 opacity-35 dark:opacity-55\">\n <GridPattern\n width={72}\n height={56}\n x={-12}\n y={4}\n squares={[\n [4, 3],\n [2, 1],\n [7, 3],\n [10, 6],\n ]}\n className=\"clarify-hero-pattern-grid absolute inset-x-0 w-full -skew-y-18 fill-black/40 stroke-black/50 mix-blend-overlay dark:fill-white/2.5 dark:stroke-white/5\"\n />\n </div>\n <svg\n viewBox=\"0 0 1113 440\"\n aria-hidden=\"true\"\n className=\"absolute top-0 left-1/2 -ml-76 w-278.25 fill-white blur-xl dark:hidden\"\n >\n <path d=\"M.016 439.5s-9.5-300 434-300S882.516 20 882.516 20V0h230.004v439.5H.016Z\" />\n </svg>\n </div>\n </div>\n )\n}\n","import clsx from 'clsx'\nimport type { ComponentPropsWithoutRef, ElementType } from 'react'\n\ntype ProseProps<T extends ElementType = 'div'> = Omit<ComponentPropsWithoutRef<T>, 'as' | 'className'> & {\n as?: T\n className?: string\n}\n\nexport function Prose<T extends ElementType = 'div'>(arg0: ProseProps<T>) {\n const { as, className, ...props } = arg0\n const Component = as ?? 'div'\n\n return (\n <Component\n className={clsx(\n className,\n 'clarify-prose prose max-w-none min-w-0 dark:prose-invert wrap-break-word',\n '[html_:where(&>*)]:w-full [html_:where(&>*)]:min-w-0 [html_:where(&>*)]:max-w-full',\n )}\n {...props}\n />\n )\n}\n","import clsx from 'clsx'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nexport type StepsProps = {\n children: ReactNode\n className?: string\n} & Omit<ComponentPropsWithoutRef<'ol'>, 'children' | 'className'>\n\nexport function Steps(arg0: StepsProps) {\n const { children, className, ...props } = arg0\n\n return (\n <ol\n className={clsx('clarify-steps my-8 ml-3 list-none border-l-2 border-(--clarify-theme-tokens-colors-border) p-0', className)}\n {...props}\n >\n {children}\n </ol>\n )\n}\n\nexport type StepProps = {\n children: ReactNode\n title?: ReactNode\n className?: string\n} & Omit<ComponentPropsWithoutRef<'li'>, 'children' | 'className' | 'title'>\n\nexport function Step(arg0: StepProps) {\n const { children, title, className, ...props } = arg0\n\n return (\n <li\n className={clsx('clarify-step relative m-0 pb-10 pl-9 last:pb-0', className)}\n {...props}\n >\n <span className=\"absolute top-0 -left-3.5 flex size-7 items-center justify-center rounded-full bg-(--clarify-theme-tokens-colors-primary) text-xs font-semibold text-white shadow-[0_0_0_4px_var(--clarify-theme-tokens-colors-background)] before:content-[counter(list-item)] dark:text-zinc-950\" aria-hidden=\"true\" />\n {title ? <h3 className=\"m-0 pt-0.5 text-base font-semibold text-(--clarify-theme-tokens-colors-foreground)\">{title}</h3> : null}\n <div className={clsx('text-sm/6 text-(--clarify-ui-text-soft) *:last:mb-0', title && 'mt-2.5', !title && '*:first:mt-0')}>\n {children}\n </div>\n </li>\n )\n}\n","import { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { motion } from 'framer-motion'\nimport { Children, isValidElement, useId, useState, type ReactElement, type ReactNode } from 'react'\n\nexport type TabItem = {\n id: string\n label: ReactNode\n panel: ReactNode\n}\n\nexport type TabProps = {\n title: ReactNode\n children: ReactNode\n value?: string\n}\n\nexport function TabItem(_props: TabProps) {\n return null\n}\n\nexport type TabsProps = {\n items?: TabItem[]\n children?: ReactNode\n defaultValue?: string\n selectedIndex?: number\n onChange?: (index: number) => void\n className?: string\n spacingClassName?: string\n listClassName?: string\n panelsClassName?: string\n actions?: ReactNode\n variant?: 'content' | 'code'\n}\n\ntype TabClassNameProps = {\n selected: boolean\n}\n\nexport function Tabs(arg0: TabsProps) {\n const { items, children, defaultValue, selectedIndex, onChange, className, spacingClassName = 'my-6', listClassName, panelsClassName, actions, variant = 'content' } = arg0\n const childItems = Children.toArray(children)\n .filter((child): child is ReactElement<TabProps> => isValidElement(child) && child.type === TabItem)\n .map((child, index) => ({\n id: child.props.value ?? `tab-${index}`,\n label: child.props.title,\n panel: child.props.children,\n }))\n const resolvedItems = items ?? childItems\n const defaultIndex = defaultValue ? Math.max(0, resolvedItems.findIndex((item) => item.id === defaultValue)) : 0\n\n const [internalIndex, setInternalIndex] = useState(defaultIndex)\n const resolvedIndex = typeof selectedIndex === 'number' ? selectedIndex : internalIndex\n const indicatorLayoutId = useId()\n\n const handleChange = (index: number) => {\n if (typeof selectedIndex !== 'number') setInternalIndex(index)\n onChange?.(index)\n }\n\n return (\n <TabGroup selectedIndex={resolvedIndex} onChange={handleChange} className={clsx('clarify-tabs', spacingClassName, className)}>\n <TabList className={clsx(\n 'flex max-w-full items-stretch overflow-x-auto border-b',\n variant === 'content' ? 'gap-1 border-(--clarify-theme-tokens-colors-border)' : 'h-10 gap-0 border-(--clarify-code-border) px-3',\n listClassName,\n )}>\n {resolvedItems.map((item) => (\n <Tab\n key={item.id}\n className={({ selected }: TabClassNameProps) => clsx(\n 'relative inline-flex shrink-0 items-center px-2.5 transition focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)',\n variant === 'content' ? 'clarify-content-tab clarify-ui-tab my-1 h-9 rounded-(--clarify-theme-tokens-radius-md)' : 'text-2xs font-semibold',\n selected && (variant === 'content' ? 'clarify-ui-tab-active' : 'text-(--clarify-code-text)'),\n variant === 'code' && !selected && 'text-(--clarify-code-muted)',\n )}\n >\n {({ selected }: TabClassNameProps) => (\n <>\n <span>{item.label}</span>\n {selected ? (\n <motion.span\n layoutId={indicatorLayoutId}\n className={clsx(\n 'absolute inset-x-2.5 h-0.5 bg-(--clarify-ui-tab-indicator)',\n variant === 'content' ? '-bottom-1 rounded-full' : '-bottom-px',\n )}\n transition={{ type: 'tween', duration: 0.16, ease: 'easeOut' }}\n />\n ) : null}\n </>\n )}\n </Tab>\n ))}\n {actions ? <div className=\"sticky right-0 ml-auto flex shrink-0 items-center bg-(--clarify-code-background)\">{actions}</div> : null}\n </TabList>\n <TabPanels className={panelsClassName ?? 'mt-5'}>\n {resolvedItems.map((item) => (\n <TabPanel\n key={item.id}\n static\n className={({ selected }: TabClassNameProps) => clsx(\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)',\n !selected && 'hidden',\n )}\n >\n {item.panel}\n </TabPanel>\n ))}\n </TabPanels>\n </TabGroup>\n )\n}\n","import clsx from 'clsx'\nimport { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode, useEffect, useId, useRef, useState } from 'react'\n\nexport type TooltipProps = {\n content: ReactNode\n children: ReactNode\n side?: 'top' | 'bottom'\n triggerClassName?: string\n} & Omit<ComponentPropsWithoutRef<'span'>, 'children' | 'content'>\n\nexport function Tooltip(arg0: TooltipProps) {\n const { content, children, side = 'top', className, triggerClassName, ...props } = arg0\n const contentId = useId()\n const [open, setOpen] = useState(false)\n const triggerRef = useRef<HTMLButtonElement>(null)\n const tooltipRef = useRef<HTMLSpanElement>(null)\n const [position, setPosition] = useState<CSSProperties>()\n\n useEffect(() => {\n if (!open) return\n\n function updatePosition() {\n const bounds = triggerRef.current?.getBoundingClientRect()\n if (!bounds) return\n setPosition({\n left: bounds.left + bounds.width / 2,\n top: side === 'top' ? bounds.top - 8 : bounds.bottom + 8,\n })\n }\n\n updatePosition()\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, true)\n return () => {\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, true)\n }\n }, [open, side])\n\n useEffect(() => {\n const tooltip = tooltipRef.current\n if (!tooltip || typeof tooltip.showPopover !== 'function') return\n if (open) tooltip.showPopover()\n else if (tooltip.matches(':popover-open')) tooltip.hidePopover()\n }, [open])\n\n return (\n <span\n className={clsx('clarify-tooltip group inline-flex align-baseline', className)}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n {...props}\n >\n <button\n type=\"button\"\n ref={triggerRef}\n aria-describedby={contentId}\n aria-expanded={open}\n className={clsx('cursor-help appearance-none rounded-sm border-0 border-b border-dotted border-current bg-transparent p-0 font-inherit text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)', triggerClassName)}\n onFocus={() => setOpen(true)}\n onBlur={() => setOpen(false)}\n onClick={() => setOpen(true)}\n onKeyDown={(event) => {\n if (event.key === 'Escape') setOpen(false)\n }}\n >\n {children}\n </button>\n <span\n ref={tooltipRef}\n id={contentId}\n role=\"tooltip\"\n popover=\"manual\"\n style={position}\n className={clsx(\n 'pointer-events-none fixed right-auto bottom-auto z-60 m-0 w-max max-w-64 -translate-x-1/2 rounded-md border-0 bg-(--clarify-theme-tokens-colors-foreground) px-2.5 py-1.5 text-center text-xs/5 font-normal text-(--clarify-theme-tokens-colors-background) shadow-lg transition duration-150',\n side === 'top' && '-translate-y-full',\n open && position ? 'visible opacity-100' : 'invisible opacity-0',\n )}\n >\n {content}\n </span>\n </span>\n )\n}\n","import clsx from 'clsx'\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react'\n\nexport type WebFrameProps = {\n src?: string\n title?: string\n children?: ReactNode\n showWindow?: boolean\n className?: string\n iframeClassName?: string\n height?: CSSProperties['height']\n} & Omit<ComponentPropsWithoutRef<'iframe'>, 'children' | 'className' | 'height' | 'src' | 'title'>\n\nexport function WebFrame(arg0: WebFrameProps) {\n const {\n src,\n title = 'Embedded content',\n children,\n showWindow = true,\n className,\n iframeClassName,\n height = 420,\n style,\n ...props\n } = arg0\n\n const frame = src ? (\n <iframe\n src={src}\n title={title}\n loading=\"lazy\"\n className={clsx('block w-full flex-1 border-0 bg-white', iframeClassName)}\n style={{ height, ...style }}\n {...props}\n />\n ) : (\n <div className={clsx('min-h-0 flex-1 overflow-auto bg-white text-zinc-950', iframeClassName)} style={{ height, ...style }}>\n {children}\n </div>\n )\n\n if (!showWindow) {\n return (\n <div\n className={clsx(\n 'clarify-web-frame not-prose my-10 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-lg shadow-zinc-900/5 dark:shadow-none',\n className,\n )}\n >\n {frame}\n </div>\n )\n }\n\n return (\n <div\n className={clsx(\n 'clarify-web-frame not-prose my-10 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-lg shadow-zinc-900/5 dark:shadow-none',\n className,\n )}\n >\n <div className=\"grid h-10 grid-cols-[1fr_minmax(0,2fr)_1fr] items-center gap-3 border-b border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-code-background) px-3\">\n <div className=\"flex items-center gap-1.5\" aria-hidden=\"true\">\n <span className=\"size-2.5 rounded-full bg-red-400/80\" />\n <span className=\"size-2.5 rounded-full bg-amber-400/80\" />\n <span className=\"size-2.5 rounded-full bg-emerald-400/80\" />\n </div>\n <div className=\"truncate rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-3 py-1 text-center text-xs text-(--clarify-ui-text-faint)\">{title}</div>\n <span aria-hidden=\"true\" />\n </div>\n {frame}\n </div>\n )\n}\n","import { Dialog, DialogBackdrop, DialogPanel } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { Maximize2, X } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, type ReactNode, useState } from 'react'\n\nexport type ImageProps = ComponentPropsWithoutRef<'img'> & {\n caption?: ReactNode\n zoom?: boolean\n}\n\nexport function Image(arg0: ImageProps) {\n const { src, alt = '', caption, zoom = false, className, ...props } = arg0\n const [open, setOpen] = useState(false)\n const image = (\n <img\n {...props}\n src={src}\n alt={alt}\n className={clsx('block h-auto max-w-full object-contain', className)}\n />\n )\n\n return (\n <figure className=\"clarify-figure not-prose mx-auto my-8 w-fit max-w-full\">\n <div className=\"group relative w-fit max-w-full overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-ui-subtle-background)\">\n {zoom ? (\n <button\n type=\"button\"\n className=\"block max-w-full cursor-zoom-in focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)\"\n aria-label={`Enlarge image: ${alt}`}\n onClick={() => setOpen(true)}\n >\n {image}\n <span className=\"absolute right-3 bottom-3 grid size-8 place-items-center rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background)/90 text-(--clarify-ui-text-soft) opacity-0 shadow-sm transition group-hover:opacity-100 group-focus-within:opacity-100\">\n <Maximize2 className=\"size-4\" aria-hidden=\"true\" />\n </span>\n </button>\n ) : image}\n </div>\n {caption ? <figcaption className=\"mt-2 text-center text-xs/5 text-(--clarify-ui-text-faint)\">{caption}</figcaption> : null}\n {zoom ? (\n <Dialog open={open} onClose={setOpen} className=\"relative z-50\">\n <DialogBackdrop className=\"fixed inset-0 bg-black/75 backdrop-blur-sm\" />\n <div className=\"fixed inset-0 flex items-center justify-center p-4 sm:p-8\">\n <DialogPanel className=\"relative max-h-full max-w-full overflow-auto rounded-(--clarify-theme-tokens-radius-lg) bg-(--clarify-theme-tokens-colors-background) p-2 shadow-2xl\">\n <img src={src} alt={alt} className=\"max-h-[calc(100dvh-5rem)] max-w-[calc(100vw-5rem)] object-contain\" />\n <button\n type=\"button\"\n className=\"absolute top-4 right-4 grid size-9 place-items-center rounded-md border border-white/20 bg-black/65 text-white transition hover:bg-black/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white\"\n aria-label=\"Close image preview\"\n onClick={() => setOpen(false)}\n >\n <X className=\"size-4\" aria-hidden=\"true\" />\n </button>\n </DialogPanel>\n </div>\n </Dialog>\n ) : null}\n </figure>\n )\n}","import clsx from 'clsx'\nimport { Info } from 'lucide-react'\nimport { createElement, type ComponentPropsWithoutRef, type ReactNode } from 'react'\n\nimport { PageActions } from '../app/PageActions'\nimport { AccordionGroup, Button, Callout, Card, CardGroup, FileTree, FileTreeItem, Heading, LocalizedLink, Prose, Step, Steps, Tab, Tabs, Tooltip, WebFrame } from '../components'\nimport { Code, CodeGroup, Pre } from '../components/Code'\nimport { Image } from '../components/Image'\n\ntype WrapperProps = { children: ReactNode }\n\nexport function wrapper(arg0: WrapperProps) {\n const { children } = arg0\n\n return (\n <article className=\"clarify-mdx-page relative flex h-full min-w-0 flex-col pt-14 pb-10\">\n <div className=\"clarify-page-actions mb-4 flex justify-end sm:absolute sm:top-14 sm:right-0 sm:mb-0\">\n <PageActions />\n </div>\n <Prose className=\"flex-auto\">{children}</Prose>\n </article>\n )\n}\n\nexport function table(arg0: ComponentPropsWithoutRef<'table'>) {\n const { className, ...props } = arg0\n return (\n <div className=\"overflow-x-auto\">\n <table className={className} {...props} />\n </div>\n )\n}\n\nexport function a(arg0: ComponentPropsWithoutRef<'a'>) {\n const { href = '', ...props } = arg0\n\n return <LocalizedLink href={href} {...props} />\n}\n\nexport function h1(arg0: ComponentPropsWithoutRef<'h1'>) {\n const { children, className, ...props } = arg0\n\n return (\n <h1 className={clsx('clarify-page-title min-w-0 flex-1', className)} {...props}>{children}</h1>\n )\n}\n\nexport const code = Code\nexport const pre = Pre\nexport const img = Image\nexport { AccordionGroup, Button, Callout, Card, CardGroup, CodeGroup, FileTree, FileTreeItem, Step, Steps, Tab, Tabs, Tooltip, WebFrame }\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\ntype NoteProps = { children: ReactNode }\n\nexport function Note(arg0: NoteProps) {\n const { children } = arg0\n\n return (\n <div className=\"clarify-note my-6 flex gap-3 rounded-r-(--clarify-theme-tokens-radius-lg) border-l-2 border-(--clarify-theme-tokens-colors-primary) bg-(--clarify-ui-subtle-background) px-4 py-3 text-sm/6 text-(--clarify-ui-text-soft) [--tw-prose-links-hover:var(--clarify-ui-accent-text)] [--tw-prose-links:var(--clarify-theme-tokens-colors-foreground)]\">\n <Info className=\"mt-1 size-4 flex-none stroke-(--clarify-ui-accent-text)\" />\n <div className=\"*:first:mt-0 *:last:mb-0\">{children}</div>\n </div>\n )\n}\n\ntype RowProps = { children: ReactNode, className?: string }\n\nexport function Row(arg0: RowProps) {\n const { children, className } = arg0\n\n return <div className={clsx('clarify-row grid grid-cols-1 items-start gap-x-8 gap-y-10 xl:max-w-none xl:grid-cols-2', className)}>{children}</div>\n}\n\ntype ColProps = { children: ReactNode; sticky?: boolean }\n\nexport function Col(arg0: ColProps) {\n const { children, sticky = false } = arg0\n\n return <div className={clsx('clarify-col *:first:mt-0 *:last:mb-0', sticky && 'xl:sticky xl:top-[calc(var(--clarify-header-offset,3.5rem)+1.5rem)] xl:self-start')}>{children}</div>\n}\n\ntype PropertiesProps = { children: ReactNode; className?: string; spacingClassName?: string }\n\nexport function Properties(arg0: PropertiesProps) {\n const { children, className, spacingClassName = 'my-6' } = arg0\n\n return (\n <div className={clsx('clarify-properties', spacingClassName, className)}>\n <ul\n role=\"list\"\n className=\"m-0 list-none divide-y divide-(--clarify-theme-tokens-colors-border) p-0\"\n >\n {children}\n </ul>\n </div>\n )\n}\n\ntype PropertyProps = { name: string; children: ReactNode; type?: string }\n\nexport function Property(arg0: PropertyProps) {\n 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-(--clarify-theme-tokens-colors-foreground)\">{name}</span>\n </dd>\n {type ? (\n <>\n <dt className=\"sr-only\">Type</dt>\n <dd className=\"text-xs text-(--clarify-theme-tokens-colors-muted)\">{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 { isValidElement, type ComponentPropsWithoutRef, type ReactNode } from 'react'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport rehypeRaw from 'rehype-raw'\n\nimport { Mermaid } from '../components/Mermaid'\n\nimport { a as MarkdownLink, code as MarkdownCode, pre as MarkdownPre } from './primitives'\nimport { markdownRemarkPlugins } from './remark'\n\nfunction getMermaidChart(children: ReactNode): string | undefined {\n if (!isValidElement(children)) return undefined\n\n const props = children.props as { className?: string; children?: ReactNode }\n const className = typeof props.className === 'string' ? props.className : ''\n if (!/\\blanguage-mermaid\\b/.test(className)) return undefined\n\n return typeof props.children === 'string' ? props.children : undefined\n}\n\nfunction MarkdownTable(arg0: ComponentPropsWithoutRef<'table'>) {\n const { className, ...props } = arg0\n return (\n <div className=\"overflow-x-auto\">\n <table className={className} {...props} />\n </div>\n )\n}\n\nconst markdownComponents: Components = {\n a(props) {\n return <MarkdownLink {...props} />\n },\n code(props) {\n return <MarkdownCode {...props} />\n },\n pre(arg0) { const { children, ...props } = arg0\n\n const chart = getMermaidChart(children)\n if (chart !== undefined) return <Mermaid chart={chart} />\n\n return <MarkdownPre {...props}>{children}</MarkdownPre>\n },\n table(props) {\n return <MarkdownTable {...props} />\n },\n}\n\ntype MarkdownProps = { children?: string; className?: string }\n\nexport function Markdown(arg0: MarkdownProps): ReactNode {\n const { children, className } = arg0\n\n if (!children) return null\n\n return (\n <div className={className}>\n <ReactMarkdown components={markdownComponents} remarkPlugins={markdownRemarkPlugins} rehypePlugins={[rehypeRaw]}>\n {children}\n </ReactMarkdown>\n </div>\n )\n}\n","import type { ExampleEntry, MediaTypeEntry, OpenApiMediaType, OpenApiParameter, OpenApiPathItem, OpenApiRecord, OpenApiResponse } from '../types'\n\nimport type { OpenAPIOperation, OpenAPIOperationSource, 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\nfunction mergeAllOfSchemas(spec: OpenAPISpec, schemas: unknown[]): OpenApiRecord {\n const merged: OpenApiRecord = {}\n const properties: OpenApiRecord = {}\n const required = new Set<string>()\n\n for (const schema of schemas) {\n const resolved = resolveRequestSchema(spec, schema)\n if (!isRecord(resolved)) continue\n Object.assign(merged, resolved)\n if (isRecord(resolved.properties)) Object.assign(properties, resolved.properties)\n if (Array.isArray(resolved.required)) resolved.required.forEach((name) => required.add(String(name)))\n }\n\n if (Object.keys(properties).length > 0) merged.properties = properties\n if (required.size > 0) merged.required = [...required]\n delete merged.allOf\n return merged\n}\n\nexport function resolveRequestSchema(spec: OpenAPISpec, schema: unknown): unknown {\n const resolved = resolveSchema(spec, schema)\n if (!isRecord(resolved)) return resolved\n\n const ownSchema = { ...resolved }\n const allOf = Array.isArray(ownSchema.allOf) ? ownSchema.allOf : []\n if (allOf.length === 0) return ownSchema\n\n delete ownSchema.allOf\n return mergeAllOfSchemas(spec, [...allOf, ownSchema])\n}\n\nexport function fuzzyMatch(value: string, query: string): boolean {\n const candidate = value.toLocaleLowerCase()\n const needle = query.trim().toLocaleLowerCase()\n let candidateIndex = 0\n\n for (const character of needle) {\n candidateIndex = candidate.indexOf(character, candidateIndex)\n if (candidateIndex === -1) return false\n candidateIndex += 1\n }\n\n return true\n}\n\nconst noExampleMatch = Symbol('no-example-match')\n\nexport function getSchemaSearchText(name: string, schema: unknown): string {\n if (!isRecord(schema)) return name\n\n return [\n name,\n schema.type,\n schema.description,\n schema.pattern,\n schema.const,\n schema.default,\n schema.minimum,\n schema.maximum,\n schema.additionalProperties,\n ].filter((value) => typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean').join(' ')\n}\n\nfunction filterExampleValue(spec: OpenAPISpec, schema: unknown, value: unknown, query: string): unknown | typeof noExampleMatch {\n const resolved = resolveRequestSchema(spec, schema)\n\n if (Array.isArray(value)) {\n const itemSchema = isRecord(resolved) ? resolved.items : undefined\n const items = value\n .map((item) => filterExampleValue(spec, itemSchema, item, query))\n .filter((item) => item !== noExampleMatch)\n return items.length > 0 ? items : noExampleMatch\n }\n\n if (isRecord(value)) {\n const properties = isRecord(resolved) && isRecord(resolved.properties) ? resolved.properties : {}\n const filtered = Object.entries(value).flatMap(([name, propertyValue]) => {\n const propertySchema = properties[name] ?? (isRecord(resolved) && isRecord(resolved.additionalProperties) ? resolved.additionalProperties : undefined)\n if (fuzzyMatch(getSchemaSearchText(name, resolveRequestSchema(spec, propertySchema)), query)) return [[name, propertyValue] as const]\n\n const child = filterExampleValue(spec, propertySchema, propertyValue, query)\n return child === noExampleMatch ? [] : [[name, child] as const]\n })\n\n return filtered.length > 0 ? Object.fromEntries(filtered) : noExampleMatch\n }\n\n return fuzzyMatch(getSchemaSearchText('', resolved), query) ? value : noExampleMatch\n}\n\nexport function filterExampleBySchema(spec: OpenAPISpec, schema: unknown, value: unknown, query: string): unknown {\n if (!query.trim()) return value\n\n const filtered = filterExampleValue(spec, schema, value, query)\n if (filtered !== noExampleMatch) return filtered\n return Array.isArray(value) ? [] : isRecord(value) ? {} : value\n}\n\nexport function getRequestSchemaVariants(spec: OpenAPISpec, schema: unknown): Array<{ key: string; title: string; schema: unknown }> {\n const resolved = resolveRequestSchema(spec, schema)\n if (!isRecord(resolved)) return []\n const keyword = Array.isArray(resolved.oneOf) ? 'oneOf' : Array.isArray(resolved.anyOf) ? 'anyOf' : undefined\n if (!keyword) return []\n\n return (resolved[keyword] as unknown[]).map((branch, index) => {\n const branchSchema = resolveRequestSchema(spec, branch)\n const branchRecord = isRecord(branchSchema) ? branchSchema : undefined\n const referenceTitle = isReference(branch) ? resolveReferenceName(branch.$ref) : undefined\n return {\n key: `${keyword}-${index}`,\n title: typeof branchRecord?.title === 'string' ? branchRecord.title : referenceTitle ?? `${keyword}[${index}]`,\n schema: branchSchema,\n }\n })\n}\n\nexport function getPathItem(spec: OpenAPISpec, path: string): OpenApiPathItem | undefined {\n return resolveObjectRef<OpenApiPathItem>(spec, spec.paths?.[path])\n}\n\nexport function getOperationPathItem(spec: OpenAPISpec, path: string, source: OpenAPIOperationSource = 'path'): OpenApiPathItem | undefined {\n if (source === 'path') return getPathItem(spec, path)\n\n const webhooks = (spec as OpenApiRecord).webhooks\n return resolveObjectRef<OpenApiPathItem>(spec, isRecord(webhooks) ? webhooks[path] : undefined)\n}\n\nexport function joinPath(base: string, path: string): string {\n if (!base) return path || '/'\n if (!path) return base\n\n const normalizedBase = base.endsWith('/') ? base.slice(0, -1) : base\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n return `${normalizedBase}${normalizedPath}`\n}\n\nfunction resolveObjectRef<T extends OpenApiRecord>(spec: OpenAPISpec | undefined, value: unknown): T | undefined {\n const resolved = spec && isReference(value) ? resolveOpenApiRef(spec, value.$ref) : value\n return isRecord(resolved) && !isReference(resolved) ? resolved as T : undefined\n}\n\nexport function schemaHasType(schema: unknown, type: string): boolean {\n if (!isRecord(schema)) return false\n if (type === 'null' && schema.nullable === true) return true\n return schema.type === type || (Array.isArray(schema.type) && schema.type.includes(type))\n}\n\nexport function getOperationParameters(spec: OpenAPISpec, path: string, operation: OpenAPIOperation, source: OpenAPIOperationSource = 'path'): OpenApiParameter[] {\n const pathParameters = getOperationPathItem(spec, path, source)?.parameters\n const operationParameters = (operation as OpenApiRecord).parameters\n const parameters = [...(Array.isArray(pathParameters) ? pathParameters : []), ...(Array.isArray(operationParameters) ? operationParameters : [])]\n .map((parameter) => resolveObjectRef<OpenApiParameter>(spec, parameter))\n .filter((parameter): parameter is OpenApiParameter => Boolean(parameter))\n const deduped = new Map<string, OpenApiParameter>()\n\n for (const parameter of parameters) {\n const key = parameter.name && parameter.in ? `${parameter.in}:${parameter.name}` : undefined\n if (key) deduped.set(key, parameter)\n }\n\n return parameters.filter((parameter) => {\n const key = parameter.name && parameter.in ? `${parameter.in}:${parameter.name}` : undefined\n return key ? deduped.get(key) === parameter : true\n })\n}\n\nexport function getRequestBody(spec: OpenAPISpec, operation: OpenAPIOperation): OpenApiRecord | undefined {\n const requestBody = (operation as OpenApiRecord).requestBody\n return resolveObjectRef(spec, requestBody)\n}\n\nexport function getMediaTypeEntries(content: unknown, spec?: OpenAPISpec): MediaTypeEntry[] {\n if (!isRecord(content)) return []\n\n return Object.entries(content)\n .map(([mediaType, value]) => ({ mediaType, value: resolveObjectRef<OpenApiMediaType>(spec, value) }))\n .filter((entry): entry is MediaTypeEntry => Boolean(entry.value))\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, spec?: OpenAPISpec): MediaTypeEntry | undefined {\n return getMediaTypeEntries(content, spec)[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, spec?: OpenAPISpec): 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(spec ? resolveRequestSchema(spec, mediaType.schema) : mediaType.schema)\n return typeof generated === 'undefined' ? [] : [{ key: 'schema', title: 'schema', value: generated, generated: true }]\n}\n\nexport function getParameterExampleEntries(parameter: OpenApiParameter): ExampleEntry[] {\n if (isRecord(parameter.examples)) {\n const examples: ExampleEntry[] = []\n\n for (const [key, example] of Object.entries(parameter.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 return typeof parameter.example === 'undefined' ? [] : [{ key: 'default', title: 'Example', value: parameter.example }]\n}\n\nexport function getRequestExampleEntries(parameters: OpenApiParameter[], mediaType?: OpenApiMediaType): ExampleEntry[] {\n const entries = new Map<string, ExampleEntry>()\n\n for (const example of getExampleEntries(mediaType).filter((entry) => !entry.generated)) entries.set(example.key, example)\n for (const parameter of parameters) {\n for (const example of getParameterExampleEntries(parameter)) {\n if (!entries.has(example.key)) entries.set(example.key, example)\n }\n }\n\n return [...entries.values()]\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 'enum'\n\n const oneOf = schema.oneOf ?? schema.anyOf\n if (Array.isArray(oneOf)) {\n return oneOf.map((branch) => schemaToType(branch)).filter(Boolean).join(' | ')\n }\n\n if (Array.isArray(schema.allOf)) {\n return schema.allOf.map((branch) => schemaToType(branch)).filter(Boolean).join(' & ')\n }\n\n if (schemaHasType(schema, 'array')) {\n return `${schemaToType(schema.items) ?? 'unknown'}[]`\n }\n\n const type = Array.isArray(schema.type) ? schema.type.map(String).join(' | ') : schema.type\n const nullableType = schema.nullable === true && type !== 'null' ? [type, 'null'].filter(Boolean).join(' | ') : type\n return typeof nullableType === 'string' ? [nullableType, 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 const variant = Array.isArray(schema.oneOf) ? schema.oneOf[0] : Array.isArray(schema.anyOf) ? schema.anyOf[0] : undefined\n if (typeof variant !== 'undefined') return schemaToExample(variant, depth + 1)\n\n if (schemaHasType(schema, 'array')) {\n return [schemaToExample(schema.items, depth + 1) ?? 'string']\n }\n\n if (schemaHasType(schema, 'object') || isRecord(schema.properties)) {\n const properties = isRecord(schema.properties) ? schema.properties : {}\n return Object.fromEntries(\n Object.entries(properties).filter(([, propertySchema]) => !isRecord(propertySchema) || propertySchema.readOnly !== true).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, spec?: OpenAPISpec): Array<{ status: string; response: OpenApiResponse }> {\n const responses = (operation as OpenApiRecord).responses\n if (!isRecord(responses)) return []\n\n return Object.entries(responses)\n .map(([status, response]) => ({ status, response: resolveObjectRef<OpenApiResponse>(spec, response) }))\n .filter((entry): entry is { status: string; response: OpenApiResponse } => Boolean(entry.response))\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 { slug } from 'github-slugger'\nimport type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'\n\nimport type { OpenApiRecord } from '../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]\nexport type OpenAPIOperationSource = 'path' | 'webhook'\nexport type OpenAPIOperationEntry = { path: string; method: OpenAPIHttpMethod; operation: OpenAPIOperation; source: OpenAPIOperationSource }\n\nexport const CLARIFY_OPENAPI_SECTION_ID_EXTENSION = 'x-clarify-section-id'\n\nexport function getOpenApiOperationSectionId(operation: OpenAPIOperation): string {\n const sectionId = (operation as OpenApiRecord)[CLARIFY_OPENAPI_SECTION_ID_EXTENSION]\n return typeof sectionId === 'string' ? sectionId : ''\n}\n\nfunction createOpenApiOperationSectionId(operation: OpenApiRecord, method: string, path: string, source: OpenAPIOperationSource): string {\n const operationId = typeof operation.operationId === 'string' ? operation.operationId.trim() : ''\n return operationId || slug(`${source === 'webhook' ? 'webhook ' : ''}${method.toLowerCase()} ${path}`)\n}\n\nfunction normalizeOpenApiOperationSectionId(operation: OpenApiRecord, method: string, path: string, source: OpenAPIOperationSource): OpenAPIOperation {\n const sectionId = operation[CLARIFY_OPENAPI_SECTION_ID_EXTENSION]\n if (typeof sectionId !== 'string' || !sectionId) {\n operation[CLARIFY_OPENAPI_SECTION_ID_EXTENSION] = createOpenApiOperationSectionId(operation, method, path, source)\n }\n return operation as OpenAPIOperation\n}\n\nexport function isOpenAPIHttpMethod(method: string): method is OpenAPIHttpMethod {\n return (OPENAPI_HTTP_METHODS as readonly string[]).includes(method.toLowerCase())\n}\n\nfunction isRecord(value: unknown): value is OpenApiRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction 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\nfunction getPathItem(spec: OpenAPISpec, path: string): OpenApiRecord | undefined {\n const pathItem = spec.paths?.[path]\n const resolved = isRecord(pathItem) && typeof pathItem.$ref === 'string' ? resolveOpenApiRef(spec, pathItem.$ref) : pathItem\n return isRecord(resolved) ? resolved : undefined\n}\n\nfunction getWebhookItem(spec: OpenAPISpec, path: string): OpenApiRecord | undefined {\n const webhooks = (spec as OpenApiRecord).webhooks\n const pathItem = isRecord(webhooks) ? webhooks[path] : undefined\n const resolved = isRecord(pathItem) && typeof pathItem.$ref === 'string' ? resolveOpenApiRef(spec, pathItem.$ref) : pathItem\n return isRecord(resolved) ? resolved : undefined\n}\n\nfunction listOperationsFromPathItems(items: Record<string, unknown>, source: OpenAPIOperationSource, spec: OpenAPISpec): OpenAPIOperationEntry[] {\n const operations: OpenAPIOperationEntry[] = []\n\n for (const path of Object.keys(items)) {\n const pathItem = source === 'webhook' ? getWebhookItem(spec, path) : getPathItem(spec, path)\n if (!pathItem) continue\n for (const method of OPENAPI_HTTP_METHODS) {\n const operation = pathItem[method]\n if (isRecord(operation)) operations.push({ path, method, operation: normalizeOpenApiOperationSectionId(operation, method, path, source), source })\n }\n }\n\n return operations\n}\n\nexport function getOpenApiOperation(spec: OpenAPISpec, path: string, method: string): OpenAPIOperation | undefined {\n return getOpenApiOperationEntry(spec, path, method)?.operation\n}\n\nexport function getOpenApiOperationEntry(spec: OpenAPISpec, path: string, method: string, source?: OpenAPIOperationSource): OpenAPIOperationEntry | undefined {\n if (!isOpenAPIHttpMethod(method)) return undefined\n\n const normalizedMethod = method.toLowerCase() as OpenAPIHttpMethod\n const sources: OpenAPIOperationSource[] = source ? [source] : ['path', 'webhook']\n for (const currentSource of sources) {\n const pathItem = currentSource === 'webhook' ? getWebhookItem(spec, path) : getPathItem(spec, path)\n const operation = pathItem?.[normalizedMethod]\n if (isRecord(operation)) {\n return {\n path,\n method: normalizedMethod,\n operation: normalizeOpenApiOperationSectionId(operation, normalizedMethod, path, currentSource),\n source: currentSource,\n }\n }\n }\n\n return undefined\n}\n\nexport function getOpenApiOperationEntryById(spec: OpenAPISpec, operationId: string): OpenAPIOperationEntry | undefined {\n const matches = listOpenApiOperations(spec).filter(({ operation }) => operation.operationId === operationId)\n return matches.length === 1 ? matches[0] : undefined\n}\n\nexport function listOpenApiOperations(spec: OpenAPISpec): OpenAPIOperationEntry[] {\n const paths = spec.paths ?? {}\n const webhooks = (spec as OpenApiRecord).webhooks\n\n return [\n ...listOperationsFromPathItems(paths, 'path', spec),\n ...(isRecord(webhooks) ? listOperationsFromPathItems(webhooks, 'webhook', spec) : []),\n ]\n}\n","import clsx from 'clsx'\nimport type { ReactNode } from 'react'\n\nconst endpointMethodStyleVars: Record<string, string> = {\n GET: 'bg-(--clarify-http-method-get-background) text-(--clarify-http-method-get-text)',\n POST: 'bg-(--clarify-http-method-post-background) text-(--clarify-http-method-post-text)',\n PUT: 'bg-(--clarify-http-method-put-background) text-(--clarify-http-method-put-text)',\n PATCH: 'bg-(--clarify-http-method-patch-background) text-(--clarify-http-method-patch-text)',\n DELETE: 'bg-(--clarify-http-method-delete-background) text-(--clarify-http-method-delete-text)',\n WEBHOOK: 'bg-(--clarify-http-method-webhook-background) text-(--clarify-http-method-webhook-text)',\n}\n\ntype EndpointMethodBadgeProps = { method: string; compact?: boolean }\n\nexport function EndpointMethodBadge(arg0: EndpointMethodBadgeProps): ReactNode {\n const { method, compact = false } = arg0\n\n return (\n <span\n className={clsx(\n compact\n ? 'rounded px-1.5 py-0.5 text-[0.625rem]/4 font-bold'\n : 'rounded-(--clarify-theme-tokens-radius-md) px-2.5 py-0.5 text-xs/6 font-black tracking-wide',\n endpointMethodStyleVars[method] ?? 'bg-(--clarify-http-method-default-background) text-(--clarify-http-method-default-text)',\n )}\n >\n {method}\n </span>\n )\n}\n","import { useEffect, useState, type ReactNode } from 'react'\nimport { codeToTokens, createCssVariablesTheme, type BundledLanguage, type ThemedToken } from 'shiki'\n\nconst cssVariablesTheme = createCssVariablesTheme()\n\ntype HighlightedCodeProps = {\n code: string\n language: string\n}\n\nexport function HighlightedCode(arg0: HighlightedCodeProps): ReactNode {\n const { code, language } = arg0\n const [lines, setLines] = useState<ThemedToken[][]>()\n\n useEffect(() => {\n let active = true\n\n void codeToTokens(code, { lang: language as BundledLanguage, theme: cssVariablesTheme })\n .then((result) => {\n if (active) setLines(result.tokens)\n })\n .catch(() => {\n if (active) setLines(undefined)\n })\n\n return () => {\n active = false\n }\n }, [code, language])\n\n if (!lines) return <code className={`language-${language}`}>{code}</code>\n\n return (\n <code className={`language-${language}`}>\n {lines.map((line, lineIndex) => (\n <span className=\"line\" key={lineIndex}>\n {line.map((token, tokenIndex) => (\n <span key={tokenIndex} style={{ color: token.color, ...token.htmlStyle }}>{token.content}</span>\n ))}\n {lineIndex < lines.length - 1 ? '\\n' : null}\n </span>\n ))}\n </code>\n )\n}\n","import { snippetz } from '@scalar/snippetz'\nimport type { ClientId, HarRequest, TargetId } from '@scalar/snippetz'\n\nimport type { OpenApiMediaType, OpenApiParameter, OpenApiServer, RequestAuthInput, RequestAuthInputs, RequestCodeExample } from '../types'\n\nimport { getContentExample, isRecord, joinPath, stringifyExample } from './helpers'\nimport type { OpenAPIOperationSource, OpenAPISpec } from './utils'\n\ntype RequestContent = { mediaType: string; value: OpenApiMediaType }\n\nexport type RequestCodeInput = {\n spec: OpenAPISpec\n path: string\n method: string\n parameters: OpenApiParameter[]\n requestContent?: RequestContent\n server?: OpenApiServer\n serverVariables?: Record<string, string>\n auth?: RequestAuthInputs\n operationSource?: OpenAPIOperationSource\n}\n\ntype RequestBody = {\n serialized?: string\n params?: NonNullable<HarRequest['postData']>['params']\n}\n\ntype BodySizeParam = { name: string; value?: unknown }\n\ntype SnippetTarget<T extends TargetId = TargetId> = {\n target: T\n client: ClientId<T>\n}\n\nconst snippetControlCharacters = [\n { character: '\\n', placeholder: '\\uE000', escape: '\\\\n' },\n { character: '\\r', placeholder: '\\uE001', escape: '\\\\r' },\n { character: '\\t', placeholder: '\\uE002', escape: '\\\\t' },\n] as const\n\nconst snippetGenerator = snippetz()\n\nfunction getAuthPlaceholder(name: string): string {\n const normalizedName = name.replace(/([a-z0-9])([A-Z])/g, '$1_$2').replace(/[^a-zA-Z0-9]+/g, '_').toUpperCase()\n return `YOUR_${normalizedName || 'CREDENTIAL'}`\n}\n\nfunction redactAuth(auth: RequestAuthInputs = []): RequestAuthInputs {\n return auth.map(input => ({ ...input, value: getAuthPlaceholder(input.name) }))\n}\n\nfunction protectSnippetControlCharacters(value: unknown): unknown {\n if (typeof value === 'string') {\n return snippetControlCharacters.reduce(\n (result, item) => result.replaceAll(item.character, item.placeholder),\n value,\n )\n }\n\n if (Array.isArray(value)) return value.map(protectSnippetControlCharacters)\n if (!isRecord(value)) return value\n\n return Object.fromEntries(\n Object.entries(value).map(([key, item]) => [key, protectSnippetControlCharacters(item)]),\n )\n}\n\nfunction restoreSnippetControlCharacters(code: string): string {\n return snippetControlCharacters.reduce(\n (result, item) => result.replaceAll(item.placeholder, item.escape),\n code,\n )\n}\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 getDefaultWebhookServer(): OpenApiServer {\n return { url: 'https://webhook.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 defaultServer = input.operationSource === 'webhook' ? getDefaultWebhookServer() : getDefaultServer(input.spec)\n const serverUrl = expandServerUrl(input.server ?? defaultServer, input.serverVariables)\n return joinPath(serverUrl, input.path)\n}\n\nfunction getQueryString(parameters: OpenApiParameter[], auth: RequestAuthInputs = []): 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 for (const input of auth) {\n if (input.scheme.type === 'apiKey' && input.scheme.in === 'query' && input.scheme.name) {\n queryString.push({ name: input.scheme.name, value: input.value })\n }\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: RequestContent): 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: BodySizeParam) => size + param.name.length + String(param.value ?? '').length, 0) ?? 0\n}\n\nfunction getRequestBody(requestContent?: RequestContent): 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(protectSnippetControlCharacters(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 getAuthHeader(auth: RequestAuthInput): Record<string, string> {\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?: RequestContent, auth: RequestAuthInputs = []): Record<string, string> {\n return {\n ...Object.assign({}, ...auth.map(getAuthHeader)),\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 buildSnippetErrorMessage(error: unknown): string {\n const detail = error instanceof Error && error.message ? `\\n\\nDetails: ${error.message}` : ''\n return `Request example unavailable.\\n\\nThe selected OpenAPI example could not be converted into a code snippet. Please check that the example value matches its media type, for example valid JSON for application/json.${detail}`\n}\n\nfunction buildSnippet(input: RequestCodeInput, target: SnippetTarget): string {\n try {\n const result = snippetGenerator.print(target.target, target.client, buildHarRequest(input))\n return restoreSnippetControlCharacters(decodeUrlPlaceholders(result || ''))\n } catch (error) {\n return buildSnippetErrorMessage(error)\n }\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 const redactedInput = { ...input, auth: redactAuth(input.auth) }\n\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(redactedInput, option),\n }))\n}\n","import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headlessui/react'\nimport { CheckIcon, ChevronsUpDownIcon } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\nexport type SelectOption = {\n value: string\n label: string\n}\n\ntype SelectControlProps = {\n label: string\n value: string\n options: Array<string | SelectOption>\n onChange: (value: string) => void\n icon?: ReactNode\n compact?: boolean\n}\n\nexport function SelectControl(arg0: SelectControlProps): 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-openai-select relative min-w-0 text-xs' : 'clarify-openai-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-openai-select-button flex min-h-8 ${buttonSizeClassName} items-center justify-between gap-2 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-code-border) bg-(--clarify-code-control-background) px-2.5 py-1 text-xs font-medium whitespace-nowrap text-(--clarify-code-text) outline-hidden transition hover:border-(--clarify-code-border) hover:bg-(--clarify-code-control-background-hover) focus:ring-2 focus:ring-(--clarify-ui-accent-border) data-open:border-(--clarify-code-border) data-open:bg-(--clarify-code-control-background-active) data-open:ring-2 data-open:ring-(--clarify-ui-accent-border)`}\n >\n <span className=\"flex min-w-0 items-center gap-1.5 overflow-hidden\">\n {icon ? <span className=\"shrink-0 text-(--clarify-code-faint)\">{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-(--clarify-code-faint)\" aria-hidden=\"true\" />\n </ListboxButton>\n <ListboxOptions\n anchor=\"bottom end\"\n className=\"clarify-openai-select-options z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-(--clarify-popover-max-width) overflow-auto rounded-(--clarify-theme-tokens-radius-lg) bg-(--clarify-code-surface) p-1 text-xs shadow-lg shadow-black/20 ring-1 ring-(--clarify-code-border) [--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-openai-select-option group flex min-h-9 cursor-default items-center justify-between gap-3 rounded-(--clarify-theme-tokens-radius-md) px-2.5 py-2 text-xs whitespace-nowrap text-(--clarify-code-control-text) select-none data-focus:bg-(--clarify-code-control-background-hover) data-focus:text-(--clarify-code-text) data-selected:bg-(--clarify-code-accent-background) data-selected:text-(--clarify-code-accent-text)\"\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","import { CheckIcon, ClipboardIcon, CodeIcon, PackageIcon } from 'lucide-react'\nimport { useState, type ReactNode } from 'react'\n\nimport { useBuiltInText } from '../../core/i18n'\nimport { copyTextToClipboard } from '../../utils/clipboard'\n\nimport { SelectControl, type SelectOption } from './SelectControl'\n\ntype CopyCodeButtonProps = { code: string }\n\nexport function CopyCodeButton(arg0: CopyCodeButtonProps): 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 copyTextToClipboard(code).then((ok) => {\n if (!ok) return\n setCopied(true)\n setTimeout(() => setCopied(false), 1000)\n })\n }}\n className=\"ml-auto flex shrink-0 items-center gap-1.5 rounded-full bg-(--clarify-code-control-background) px-2.5 py-1.5 text-2xs font-medium whitespace-nowrap text-(--clarify-code-muted) transition hover:bg-(--clarify-code-control-background-hover) hover:text-(--clarify-code-text) focus:bg-(--clarify-code-control-background-hover) focus:text-(--clarify-code-text)\"\n >\n {copied ? (\n <CheckIcon className=\"h-3.5 w-3.5 text-(--clarify-theme-tokens-colors-primary)\" aria-hidden=\"true\" />\n ) : (\n <ClipboardIcon className=\"h-3.5 w-3.5 text-(--clarify-code-faint)\" aria-hidden=\"true\" />\n )}\n <span>{copied ? t('actions.copied') : t('actions.copy')}</span>\n </button>\n )\n}\n\ntype ExampleMetaValueProps = {\n label: string\n value: string\n options?: string[]\n onChange?: (value: string) => void\n className: string\n}\n\nexport function ExampleMetaValue(arg0: ExampleMetaValueProps): 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\ntype CodeToolbarProps = {\n code: string\n leadingControls?: ReactNode\n languageOptions?: SelectOption[]\n selectedLanguageKey?: string\n onSelectLanguage?: (key: string) => void\n clientOptions?: SelectOption[]\n selectedClientKey?: string\n onSelectClient?: (key: string) => void\n}\n\nexport function CodeToolbar(arg0: CodeToolbarProps): ReactNode {\n const {\n code,\n leadingControls,\n languageOptions,\n selectedLanguageKey,\n onSelectLanguage,\n clientOptions,\n selectedClientKey,\n onSelectClient,\n } = arg0\n\n const t = useBuiltInText()\n const inlineControls = Boolean(leadingControls)\n\n return (\n <div className={`clarify-openai-code-toolbar flex items-center gap-2 px-4 pt-3${inlineControls ? ' clarify-openai-code-toolbar-inline' : ''}`}>\n <div className={`clarify-openai-code-toolbar-controls flex min-w-0 flex-1 items-center gap-2${inlineControls ? ' flex-nowrap overflow-x-auto' : ' flex-wrap'}`}>\n {leadingControls}\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","import { useBuiltInText } from '../../core/i18n'\nimport { getOperationPathItem, isRecord } from '../lib/helpers'\nimport type { OpenAPIOperation, OpenAPIOperationSource, OpenAPISpec } from '../lib/utils'\nimport type {\n ExampleEntry,\n OpenApiSecurityRequirement,\n OpenApiSecurityScheme,\n OpenApiServer,\n RequestCodeExample,\n} from '../types'\n\nimport type { SelectOption } from './SelectControl'\n\ntype AuthPlaceholderArg = { scheme: OpenApiSecurityScheme }\n\nexport function getServers(spec: OpenAPISpec, operation: OpenAPIOperation, path?: string, source: OpenAPIOperationSource = 'path'): OpenApiServer[] {\n const operationServers = (operation as Record<string, unknown>).servers\n const pathServers = path ? getOperationPathItem(spec, path, source)?.servers : undefined\n const servers = Array.isArray(operationServers)\n ? operationServers\n : Array.isArray(pathServers)\n ? pathServers\n : source === 'webhook'\n ? [{ url: 'https://webhook.example.com' }]\n : (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.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 AuthSchemeOption = { name: string; scheme: OpenApiSecurityScheme; scopes: string[] }\nexport type AuthOption = { key: string; label: string; schemes: AuthSchemeOption[] }\n\nexport function getAuthOptions(spec: OpenAPISpec, operation: OpenAPIOperation): AuthOption[] {\n const schemes = getSecuritySchemes(spec)\n const requirements = getSecurityRequirements(spec, operation)\n\n return requirements.map((requirement, index) => {\n const requirementSchemes = Object.keys(requirement)\n .map((name) => ({ name, scheme: schemes[name], scopes: requirement[name] ?? [] }))\n .filter((option): option is AuthSchemeOption => Boolean(option.scheme))\n return {\n key: `requirement:${index}`,\n label: requirementSchemes.map((option) => option.name).join(' + '),\n schemes: requirementSchemes,\n }\n })\n}\n\nexport function authPlaceholder(auth?: AuthPlaceholderArg): 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\nexport function getExampleLabel(example: ExampleEntry, t: ReturnType<typeof useBuiltInText>): string {\n return example.generated && example.title === 'schema' ? t('openapi.schemaExample') : example.title\n}\n\nexport function 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\nexport function 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","import { useState, type ReactNode } from 'react'\n\nimport { HighlightedCode } from '../../components/HighlightedCode'\nimport { useBuiltInText } from '../../core/i18n'\nimport { codeLanguageForMediaType, filterExampleBySchema, getExampleEntries, getMediaTypeEntries, getResponseEntries, stringifyExample } from '../lib/helpers'\nimport { buildRequestCodeExamples } from '../lib/request-code'\nimport type { OpenAPIOperation, OpenAPIOperationSource, OpenAPISpec } from '../lib/utils'\nimport type {\n ExampleEntry,\n MediaTypeEntry,\n OpenApiParameter,\n RequestAuthInputs,\n} from '../types'\n\n\nimport { ExampleMetaValue, CodeToolbar } from './CodeDisplay'\nimport {\n getExampleLabel,\n getLanguageOptions,\n getClientOptions,\n} from './helpers'\nimport { SelectControl, type SelectOption } from './SelectControl'\n\ntype ApiExampleCodeGroupProps = {\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 metaInToolbar?: 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}\n\nfunction ApiExampleCodeGroup(arg0: ApiExampleCodeGroupProps): ReactNode {\n const {\n title,\n tag,\n tagOptions,\n onSelectTag,\n label,\n labelOptions,\n onSelectLabel,\n comfortableMeta = false,\n metaInToolbar = 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-10 min-w-0 items-center gap-2 border-b border-(--clarify-code-border) bg-(--clarify-code-background) px-3.5 py-2'\n : 'flex h-9 min-w-0 items-center gap-2 border-b border-(--clarify-code-border) bg-(--clarify-code-background) px-3.5'\n const meta = (\n <>\n {tag ? (\n <ExampleMetaValue\n label={t('openapi.status')}\n value={tag}\n options={tagOptions}\n onChange={onSelectTag}\n className=\"clarify-openai-example-status font-semibold text-emerald-400\"\n />\n ) : null}\n {tag && label ? <span className=\"h-0.5 w-0.5 shrink-0 rounded-full bg-(--clarify-code-faint)\" /> : 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 text-xs text-(--clarify-code-muted)\"\n />\n ) : null}\n </>\n )\n\n return (\n <div className=\"clarify-openai-example my-6 overflow-hidden rounded-lg border border-(--clarify-code-border) bg-(--clarify-code-background) shadow-sm\">\n <div className=\"not-prose\">\n <div className=\"clarify-openai-example-header flex min-h-11 items-center gap-3 border-b border-(--clarify-code-border) bg-(--clarify-code-header-background) px-3.5 py-1.5\">\n <h3 className=\"mr-auto min-w-16 truncate py-1 text-sm font-semibold text-(--clarify-code-text)\">{title}</h3>\n <div className=\"clarify-openai-example-header-controls 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) && !metaInToolbar ? <div className={metaClassName}>{meta}</div> : null}\n <div className=\"clarify-openai-example-code group bg-(--clarify-code-background)\">\n <CodeToolbar\n code={code}\n leadingControls={metaInToolbar ? meta : undefined}\n languageOptions={languageOptions}\n selectedLanguageKey={selectedLanguageKey}\n onSelectLanguage={onSelectLanguage}\n clientOptions={clientOptions}\n selectedClientKey={selectedClientKey}\n onSelectClient={onSelectClient}\n />\n <pre className=\"max-h-128 overflow-auto overscroll-contain px-4 pt-3 pb-4 text-xs text-(--clarify-code-text)\">\n <HighlightedCode code={code} language={language} />\n </pre>\n </div>\n </div>\n </div>\n )\n}\n\ntype RequestExamplesPanelProps = {\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: Parameters<typeof buildRequestCodeExamples>[0]['server']\n serverVariables: Record<string, string>\n auth?: RequestAuthInputs\n operationSource?: OpenAPIOperationSource\n sharedExampleKey?: string\n onSelectExampleKey?: (value: string) => void\n query?: string\n}\n\ntype UseRequestExamplesStateArgs = {\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: Parameters<typeof buildRequestCodeExamples>[0]['server']\n serverVariables: Record<string, string>\n auth?: RequestAuthInputs\n operationSource?: OpenAPIOperationSource\n sharedExampleKey?: string\n onSelectExampleKey?: (value: string) => void\n query?: string\n}\n\nfunction firstExampleKeyForMediaType(requestContents: MediaTypeEntry[], mediaType: string, spec?: OpenAPISpec): string {\n return getExampleEntries(requestContents.find((content) => content.mediaType === mediaType)?.value, spec)[0]?.key ?? ''\n}\n\nfunction isStructuredMediaType(mediaType: string): boolean {\n return mediaType.includes('json') || mediaType.includes('yaml') || mediaType.includes('yml')\n}\n\nfunction useRequestExamplesState(arg0: UseRequestExamplesStateArgs) {\n const {\n spec,\n path,\n method,\n parameters,\n requestContents,\n selectedMediaType,\n onSelectMediaType,\n selectedServer,\n serverVariables,\n auth,\n operationSource,\n sharedExampleKey,\n onSelectExampleKey,\n query = '',\n } = arg0\n\n const selectedContent = requestContents.find((content) => content.mediaType === selectedMediaType) ?? requestContents[0]\n const examples = getExampleEntries(selectedContent?.value, spec)\n const [selectedExampleKey, setSelectedExampleKey] = useState(examples[0]?.key ?? '')\n const [selectedLanguageKey, setSelectedLanguageKey] = useState('shell')\n const [selectedClientKey, setSelectedClientKey] = useState('curl')\n\n const linkedExampleKey = sharedExampleKey && examples.some((example) => example.key === sharedExampleKey) ? sharedExampleKey : undefined\n const currentExampleKey = linkedExampleKey ?? selectedExampleKey\n const selectedExample = examples.find((example) => example.key === currentExampleKey) ?? examples[0]\n const requestExample = selectedContent && isStructuredMediaType(selectedContent.mediaType)\n ? filterExampleBySchema(spec, selectedContent.value.schema, selectedExample?.value, query)\n : selectedExample?.value\n const requestContent = selectedContent ? { ...selectedContent, value: { ...selectedContent.value, example: requestExample, examples: undefined } } : undefined\n\n const codeOptions = buildRequestCodeExamples({\n spec,\n path,\n method,\n parameters,\n requestContent,\n server: selectedServer,\n serverVariables,\n auth,\n operationSource,\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 selectedContent,\n selectedExample,\n selectedCode,\n languageOptions,\n clientOptions,\n examples,\n onSelectMediaType: (value: string) => {\n onSelectMediaType(value)\n setSelectedExampleKey(firstExampleKeyForMediaType(requestContents, value, spec))\n },\n onSelectExample: (value: string) => {\n setSelectedExampleKey(value)\n onSelectExampleKey?.(value)\n },\n onSelectLanguage: (value: string) => {\n const nextCode = codeOptions.find((option) => option.languageKey === value)\n setSelectedLanguageKey(nextCode?.languageKey ?? value)\n setSelectedClientKey(nextCode?.clientKey ?? '')\n },\n onSelectClient: setSelectedClientKey,\n }\n}\n\nexport function RequestExamplesPanel(arg0: RequestExamplesPanelProps): ReactNode {\n const {\n spec,\n path,\n method,\n parameters,\n requestContents,\n selectedMediaType,\n onSelectMediaType,\n selectedServer,\n serverVariables,\n auth,\n operationSource,\n sharedExampleKey,\n onSelectExampleKey,\n query,\n } = arg0\n\n const t = useBuiltInText()\n const state = useRequestExamplesState({\n spec,\n path,\n method,\n parameters,\n requestContents,\n selectedMediaType,\n onSelectMediaType,\n selectedServer,\n serverVariables,\n auth,\n operationSource,\n sharedExampleKey,\n onSelectExampleKey,\n query,\n })\n\n return (\n <ApiExampleCodeGroup\n title={t('openapi.request')}\n tag={method}\n label={path}\n code={state.selectedCode.code}\n language={state.selectedCode.language}\n mediaTypes={requestContents.map((content) => content.mediaType)}\n selectedMediaType={state.selectedContent?.mediaType}\n onSelectMediaType={state.onSelectMediaType}\n examples={state.examples}\n selectedExampleKey={state.selectedExample?.key}\n onSelectExample={state.onSelectExample}\n languageOptions={state.languageOptions}\n selectedLanguageKey={state.selectedCode.languageKey}\n onSelectLanguage={state.onSelectLanguage}\n clientOptions={state.clientOptions}\n selectedClientKey={state.selectedCode.clientKey}\n onSelectClient={state.onSelectClient}\n />\n )\n}\n\ntype ResponseExamplesPanelProps = {\n operation: OpenAPIOperation\n spec?: OpenAPISpec\n title?: string\n sharedExampleKey?: string\n onSelectExampleKey?: (value: string) => void\n selectedStatus?: string\n onSelectStatus?: (value: string) => void\n query?: string\n}\n\ntype UseResponseExamplesStateArgs = {\n operation: OpenAPIOperation\n spec?: OpenAPISpec\n sharedExampleKey?: string\n onSelectExampleKey?: (value: string) => void\n selectedStatus?: string\n onSelectStatus?: (value: string) => void\n query?: string\n}\n\nfunction firstExampleKeyForResponseContent(content?: MediaTypeEntry, spec?: OpenAPISpec): string {\n return getExampleEntries(content?.value, spec)[0]?.key ?? ''\n}\n\nexport function getResponseExampleBody(content: MediaTypeEntry | undefined, example: ExampleEntry | undefined, spec?: OpenAPISpec, query = ''): string {\n if (!content) return ''\n const value = spec && isStructuredMediaType(content.mediaType)\n ? filterExampleBySchema(spec, content.value.schema, example?.value, query)\n : example?.value\n return stringifyExample(value)\n}\n\ntype ResponseSelectionState = {\n status: string\n mediaType: string\n exampleKey: string\n}\n\nfunction useResponseExamplesState(arg0: UseResponseExamplesStateArgs) {\n const { operation, spec, sharedExampleKey, onSelectExampleKey, selectedStatus, onSelectStatus, query = '' } = arg0\n const responses = getResponseEntries(operation, spec)\n const orderedResponses = [...responses].sort((left, right) => {\n if (left.status === 'default') return -1\n if (right.status === 'default') return 1\n\n const leftCode = Number(left.status)\n const rightCode = Number(right.status)\n\n if (!Number.isNaN(leftCode) && !Number.isNaN(rightCode)) return leftCode - rightCode\n return left.status.localeCompare(right.status)\n })\n const defaultStatus = orderedResponses.find(({ status }) => status === 'default')?.status\n ?? orderedResponses.find(({ status }) => status.startsWith('2'))?.status\n ?? orderedResponses[0]?.status\n ?? ''\n const [internalSelectedStatus, setInternalSelectedStatus] = useState(defaultStatus)\n const activeStatus = selectedStatus ?? internalSelectedStatus\n const selectedResponse = orderedResponses.find(({ status }) => status === activeStatus) ?? orderedResponses[0]\n const responseContents = getMediaTypeEntries(selectedResponse?.response.content, spec)\n const [selection, setSelection] = useState<ResponseSelectionState>(() => ({\n status: activeStatus,\n mediaType: responseContents[0]?.mediaType ?? '',\n exampleKey: firstExampleKeyForResponseContent(responseContents[0], spec),\n }))\n const resolvedSelection = selection.status === activeStatus\n ? selection\n : {\n status: activeStatus,\n mediaType: responseContents[0]?.mediaType ?? '',\n exampleKey: firstExampleKeyForResponseContent(responseContents[0], spec),\n }\n const selectedContent = responseContents.find((content) => content.mediaType === resolvedSelection.mediaType) ?? responseContents[0]\n const examples = getExampleEntries(selectedContent?.value, spec)\n const selectedExampleKey = examples.some((example) => example.key === resolvedSelection.exampleKey) ? resolvedSelection.exampleKey : examples[0]?.key ?? ''\n const linkedExampleKey = sharedExampleKey && examples.some((example) => example.key === sharedExampleKey) ? sharedExampleKey : undefined\n const currentExampleKey = linkedExampleKey ?? selectedExampleKey\n const selectedExample = examples.find((example) => example.key === currentExampleKey) ?? examples[0]\n const responseBody = getResponseExampleBody(selectedContent, selectedExample, spec, query)\n\n return {\n responses: orderedResponses,\n selectedResponse,\n responseContents,\n selectedContent,\n examples,\n selectedExample,\n responseBody,\n onSelectStatus: (value: string) => {\n const nextResponse = orderedResponses.find(({ status }) => status === value)\n const nextContents = getMediaTypeEntries(nextResponse?.response.content, spec)\n if (typeof selectedStatus === 'undefined') setInternalSelectedStatus(value)\n onSelectStatus?.(value)\n setSelection({\n status: value,\n mediaType: nextContents[0]?.mediaType ?? '',\n exampleKey: firstExampleKeyForResponseContent(nextContents[0], spec),\n })\n },\n onSelectMediaType: (value: string) => {\n const nextContent = responseContents.find((content) => content.mediaType === value)\n setSelection((current) => ({\n ...current,\n mediaType: value,\n exampleKey: firstExampleKeyForResponseContent(nextContent, spec),\n }))\n },\n onSelectExample: (value: string) => {\n setSelection((current) => ({\n ...current,\n exampleKey: value,\n }))\n onSelectExampleKey?.(value)\n },\n }\n}\n\nexport function ResponseExamplesPanel(arg0: ResponseExamplesPanelProps): ReactNode {\n const { operation, spec, title, sharedExampleKey, onSelectExampleKey, selectedStatus, onSelectStatus, query } = arg0\n\n const t = useBuiltInText()\n const state = useResponseExamplesState({ operation, spec, sharedExampleKey, onSelectExampleKey, selectedStatus, onSelectStatus, query })\n\n if (!state.selectedContent || !state.responseBody) return null\n\n return (\n <ApiExampleCodeGroup\n title={title ?? t('openapi.response')}\n tag={state.selectedResponse?.status}\n tagOptions={state.responses.map((response) => response.status)}\n onSelectTag={state.responses.length > 0 ? state.onSelectStatus : undefined}\n label={state.selectedContent?.mediaType}\n labelOptions={state.responseContents.map((content) => content.mediaType)}\n onSelectLabel={state.responseContents.length > 0 ? state.onSelectMediaType : undefined}\n code={state.responseBody}\n language={codeLanguageForMediaType(state.selectedContent.mediaType)}\n examples={state.examples}\n selectedExampleKey={state.selectedExample?.key}\n onSelectExample={state.onSelectExample}\n metaInToolbar\n />\n )\n}\n\n// Re-export helpers for backward compatibility\nexport {\n getServers,\n getServerKey,\n getServerLabel,\n defaultServerVariables,\n authPlaceholder,\n authLabel,\n getAuthOptions,\n type AuthOption,\n} from './helpers'\n","import clsx from 'clsx'\nimport { type ReactNode } from 'react'\n\ntype OpenApiDocumentSectionProps = {\n title: ReactNode\n children: ReactNode\n action?: ReactNode\n className?: string\n bodyClassName?: string\n level?: 3 | 4\n}\n\nexport function OpenApiDocumentSection(props: OpenApiDocumentSectionProps): ReactNode {\n const { title, children, action, className, bodyClassName, level = 3 } = props\n const heading = level === 3\n ? <h3 className=\"!m-0 text-sm/6 font-semibold text-(--clarify-theme-tokens-colors-foreground)\">{title}</h3>\n : <h4 className=\"!m-0 text-xs/5 font-semibold text-(--clarify-ui-text-soft)\">{title}</h4>\n\n return (\n <section className={clsx('clarify-openapi-document-section', className)}>\n {action ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n {heading}\n {action}\n </div>\n ) : heading}\n <div className={clsx('mt-2', bodyClassName)}>{children}</div>\n </section>\n )\n}\n","import { type ReactNode } from 'react'\n\nimport { Tabs } from '../../components'\nimport { useBuiltInText } from '../../core/i18n'\nimport { Markdown } from '../../mdx/Markdown'\n\nimport type { AuthOption } from './ExamplePanels'\nimport { OpenApiDocumentSection } from './OpenApiDocumentSection'\n\nfunction authSchemeType(option: AuthOption['schemes'][number], apiKeyLabel: string): string {\n const { scheme } = option\n if (scheme.type === 'http') return scheme.scheme?.toUpperCase() || 'HTTP'\n if (scheme.type === 'apiKey') return apiKeyLabel\n if (scheme.type === 'oauth2') return 'OAUTH 2.0'\n if (scheme.type === 'openIdConnect') return 'OPENID CONNECT'\n return scheme.type?.toUpperCase() || 'AUTH'\n}\n\ntype OpenApiAuthDocumentationProps = {\n options: AuthOption[]\n}\n\nexport function OpenApiAuthDocumentation(props: OpenApiAuthDocumentationProps): ReactNode {\n const { options } = props\n const t = useBuiltInText()\n\n if (options.length === 0) return null\n\n const renderOption = (option: AuthOption) => option.schemes.length === 0 ? (\n <div className=\"border-b border-(--clarify-theme-tokens-colors-border) pt-2 pb-4 text-sm/6 font-medium text-(--clarify-theme-tokens-colors-foreground)\">{t('openapi.authNoAuth')}</div>\n ) : (\n <div className=\"divide-y divide-(--clarify-theme-tokens-colors-border) border-b border-(--clarify-theme-tokens-colors-border)\">\n {option.schemes.map((schemeOption, schemeIndex) => {\n const { scheme } = schemeOption\n const details = [\n scheme.type === 'apiKey' && scheme.in && scheme.name\n ? t('openapi.authLocation', { in: scheme.in, name: scheme.name })\n : undefined,\n scheme.type === 'http' && scheme.bearerFormat\n ? t('openapi.authBearerFormat', { format: scheme.bearerFormat })\n : undefined,\n scheme.type === 'openIdConnect' ? scheme.openIdConnectUrl : undefined,\n schemeOption.scopes.length > 0\n ? t('openapi.authScopes', { scopes: schemeOption.scopes.join(', ') })\n : undefined,\n ].filter((value): value is string => Boolean(value))\n\n return (\n <div key={schemeOption.name}>\n {schemeIndex > 0 ? (\n <div className=\"relative h-0\">\n <span className=\"absolute top-0 left-4 -translate-y-1/2 bg-(--clarify-theme-tokens-colors-background) px-1.5 text-2xs font-semibold text-(--clarify-ui-text-faint)\">{t('openapi.authAnd')}</span>\n </div>\n ) : null}\n <div className=\"py-4 first:pt-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-mono text-sm/6 font-semibold text-(--clarify-theme-tokens-colors-foreground)\">{schemeOption.name}</span>\n <span className=\"rounded bg-(--clarify-ui-subtle-background) px-1.5 py-0.5 text-2xs font-semibold text-(--clarify-ui-text-soft)\">{authSchemeType(schemeOption, t('openapi.authApiKey'))}</span>\n </div>\n {scheme.description ? <Markdown className=\"mt-2 text-sm/6 text-(--clarify-ui-text-soft) *:first:mt-0 *:last:mb-0\">{scheme.description}</Markdown> : null}\n {details.length > 0 ? (\n <div className=\"mt-2 flex min-w-0 flex-wrap gap-x-4 gap-y-1 text-xs/5 text-(--clarify-ui-text-faint)\">\n {details.map((detail) => <span key={detail} className=\"min-w-0 break-all font-mono\">{detail}</span>)}\n </div>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n )\n\n return (\n <OpenApiDocumentSection title={t('openapi.authentication')} bodyClassName=\"not-prose\">\n {options.length === 1 ? renderOption(options[0]) : (\n <Tabs\n items={options.map((option) => ({\n id: option.key,\n label: option.label || t('openapi.none'),\n panel: renderOption(option),\n }))}\n spacingClassName=\"m-0\"\n panelsClassName=\"mt-2\"\n />\n )}\n </OpenApiDocumentSection>\n )\n}\n","import clsx from 'clsx'\nimport { ChevronDown, ChevronRight } from 'lucide-react'\nimport { useState, type ReactNode } from 'react'\n\nimport { Tabs } from '../../components'\nimport { useBuiltInText } from '../../core/i18n'\nimport { Markdown } from '../../mdx/Markdown'\nimport { Properties, Property } from '../../mdx/primitives'\nimport { fuzzyMatch, getJsonLikeContent, getResponseEntries, getSchemaSearchText, isRecord, isReference, resolveReferenceName, resolveSchema, schemaHasType, schemaToType } from '../lib/helpers'\nimport type { OpenAPIOperation, OpenAPISpec } from '../lib/utils'\nimport type { OpenApiParameter, OpenApiResponse } from '../types'\n\nimport { OpenApiDocumentSection } from './OpenApiDocumentSection'\n\ntype SchemaTreeNode = {\n key: string\n name: string\n kind: 'property' | 'enum'\n type?: string\n description?: string\n details?: string\n required: boolean\n defaultExpanded?: boolean\n children: SchemaTreeNode[]\n visible?: boolean\n}\n\nfunction getEnumDescriptions(schema: Record<string, unknown>): Array<string | undefined> {\n const descriptions = schema['x-enumDescriptions']\n\n if (Array.isArray(descriptions)) {\n return descriptions.map((value) => (typeof value === 'string' ? value : undefined))\n }\n\n if (isRecord(descriptions)) {\n return Array.isArray(schema.enum)\n ? schema.enum.map((value) => {\n const description = descriptions[String(value)]\n return typeof description === 'string' ? description : undefined\n })\n : []\n }\n\n return []\n}\n\ntype SchemaTreeBranch = {\n label: string\n schema: unknown\n}\n\nfunction getSchemaDetails(schema: Record<string, unknown>): string | undefined {\n const details = [\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\n return details.length > 0 ? details.join('; ') : undefined\n}\n\nfunction getSchemaDescription(schema: Record<string, unknown>): string | undefined {\n return typeof schema.description === 'string' ? schema.description : undefined\n}\n\nfunction getSchemaNodeType(schema: unknown): string | undefined {\n return schemaToType(schema)\n}\n\nfunction getEnumChildren(schema: Record<string, unknown>, path: string): SchemaTreeNode[] {\n if (!Array.isArray(schema.enum) || schema.enum.length === 0) return []\n\n const descriptions = getEnumDescriptions(schema)\n\n return schema.enum.map((value, index) => ({\n key: `${path || 'root'}.enum[${index}]`,\n name: String(value),\n kind: 'enum',\n description: descriptions[index],\n required: false,\n children: [],\n }))\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\ntype GetSchemaChildrenArgs = {\n spec: OpenAPISpec\n schema: unknown\n path: string\n required?: string[]\n depth?: number\n seen?: Set<string>\n defaultExpanded?: boolean\n}\n\nfunction getSchemaChildren(arg0: GetSchemaChildrenArgs): SchemaTreeNode[] {\n const {\n spec,\n path,\n schema,\n depth = 0,\n required = [],\n seen = new Set<string>(),\n defaultExpanded,\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 defaultExpanded,\n })\n }\n\n if (!isRecord(schema)) return []\n\n const arrayChildren = schemaHasType(schema, 'array')\n ? getSchemaChildren({ spec, schema: schema.items, path: `${path}[]`, depth: depth + 1, seen, defaultExpanded })\n : []\n\n const objectRequired = Array.isArray(schema.required) ? schema.required.map(String) : required\n const enumChildren = getEnumChildren(schema, path)\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 = schemaHasType(property, '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 defaultExpanded,\n })\n const hasEnumValues = Array.isArray(property.enum) && property.enum.length > 0\n\n return {\n key: childPath,\n name,\n kind: 'property' as const,\n type: getSchemaNodeType(property),\n description: getSchemaDescription(property),\n details: getSchemaDetails(property),\n required: objectRequired.includes(name),\n defaultExpanded: hasEnumValues ? defaultExpanded === true : (defaultExpanded ?? depth < 1),\n children,\n }\n })\n\n const additionalPropertyChildren = isRecord(schema.additionalProperties)\n ? [{\n key: `${path || 'root'}.*`,\n name: '*',\n kind: 'property' as const,\n type: getSchemaNodeType(schema.additionalProperties),\n description: getSchemaDescription(schema.additionalProperties),\n details: getSchemaDetails(schema.additionalProperties),\n required: false,\n defaultExpanded: defaultExpanded ?? depth < 1,\n children: getSchemaChildren({ spec, schema: schema.additionalProperties, path: `${path || 'root'}.*`, depth: depth + 1, seen, defaultExpanded }),\n }]\n : []\n\n const composedChildren = getComposedBranches(schema).map(({ label, schema: branchSchema }) => {\n const resolvedBranch = resolveSchema(spec, branchSchema)\n const branch = isRecord(resolvedBranch) ? resolvedBranch : undefined\n\n return {\n key: `${path || 'root'}.${label}`,\n name: label,\n kind: 'property' as const,\n type: getSchemaNodeType(branch),\n description: branch ? getSchemaDescription(branch) : undefined,\n details: branch ? getSchemaDetails(branch) : undefined,\n required: false,\n defaultExpanded: defaultExpanded ?? depth < 1,\n children: getSchemaChildren({ spec, schema: branchSchema, path: `${path || 'root'}.${label}`, required: objectRequired, depth: depth + 1, seen, defaultExpanded }),\n }\n })\n\n return [\n ...arrayChildren,\n ...enumChildren,\n ...propertyChildren,\n ...additionalPropertyChildren,\n ...composedChildren\n ]\n}\n\nfunction getRootSchemaNode(spec: OpenAPISpec, schema: unknown, defaultExpanded?: boolean): 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 kind: 'property',\n type: getSchemaNodeType(resolved),\n description: getSchemaDescription(resolved),\n details: getSchemaDetails(resolved),\n required: false,\n children: getSchemaChildren({ spec, schema: resolvedSchema, path: resolveReferenceName(schema.$ref), seen: new Set([schema.$ref]), defaultExpanded }),\n }\n }\n\n if (!isRecord(schema)) return undefined\n\n return {\n key: 'root',\n name: 'body',\n kind: 'property',\n type: getSchemaNodeType(schema),\n description: getSchemaDescription(schema),\n details: getSchemaDetails(schema),\n required: false,\n children: getSchemaChildren({ spec, schema, path: '', defaultExpanded }),\n }\n}\n\ntype SchemaNodeProps = { node: SchemaTreeNode; depth?: number; defaultExpanded?: boolean }\ntype ExpandableSchemaNodeProps = SchemaNodeProps & { forceExpanded?: boolean }\n\nfunction EnumValueNode(arg0: SchemaNodeProps): ReactNode {\n const { node } = arg0\n\n return (\n <li className={clsx('clarify-schema-node m-0 p-0', node.visible === false && 'hidden')}>\n <div className=\"flex min-w-0 items-start rounded-(--clarify-theme-tokens-radius-md) px-2 py-2 text-left\">\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-(--clarify-theme-tokens-colors-foreground)\">{node.name}</span>\n </div>\n {node.description || node.details ? (\n <div className=\"mt-0.5 text-sm/5 text-(--clarify-ui-text-soft) *:first:mt-0 *:last:mb-0\">\n {node.description ? <Markdown className=\"*:first:mt-0 *:last:mb-0\">{node.description}</Markdown> : null}\n {node.details ? <p className=\"text-xs text-(--clarify-ui-text-faint)\">{node.details}</p> : null}\n </div>\n ) : null}\n </div>\n </div>\n </li>\n )\n}\n\nfunction SchemaNode(arg0: ExpandableSchemaNodeProps): ReactNode {\n const { node, depth = 0, defaultExpanded, forceExpanded = false } = arg0\n\n const t = useBuiltInText()\n const [locallyExpanded, setLocallyExpanded] = useState(defaultExpanded ?? depth < 1)\n const hasChildren = node.children.length > 0\n const expanded = forceExpanded || locallyExpanded\n\n if (node.kind === 'enum') {\n return <EnumValueNode node={node} depth={depth} />\n }\n\n const type = [node.type, node.required ? t('openapi.requiredBadge') : undefined].filter(Boolean).join(', ') || undefined\n const fallbackDescription = hasChildren\n ? undefined\n : node.required\n ? t('openapi.required')\n : t('openapi.optional')\n const rowClassName = 'flex w-full min-w-0 items-start rounded-(--clarify-theme-tokens-radius-md) px-2 py-2 text-left'\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-(--clarify-theme-tokens-colors-foreground)\">{node.name}</span>\n {type ? <span className=\"text-xs text-(--clarify-theme-tokens-colors-muted)\">{type}</span> : null}\n </div>\n <div className=\"mt-0.5 text-sm/5 text-(--clarify-ui-text-soft) *:first:mt-0 *:last:mb-0\">\n {node.description ? <Markdown className=\"*:first:mt-0 *:last:mb-0\">{node.description}</Markdown> : fallbackDescription}\n {node.details ? <p className=\"text-xs text-(--clarify-ui-text-soft)\">{node.details}</p> : null}\n </div>\n </div>\n {hasChildren ? (\n <span className=\"ml-2 flex h-5 w-5 flex-none items-center justify-center text-(--clarify-ui-text-faint)\" 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={clsx('clarify-schema-node m-0 p-0', node.visible === false && 'hidden')}>\n {hasChildren ? (\n <button\n type=\"button\"\n aria-label={expanded ? t('openapi.collapse') : t('openapi.expand')}\n aria-expanded={expanded}\n onClick={() => setLocallyExpanded((value) => !value)}\n className={clsx(rowClassName, 'cursor-pointer transition hover:bg-(--clarify-ui-hover-background) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)')}\n >\n {content}\n </button>\n ) : (\n <div className={rowClassName}>{content}</div>\n )}\n {hasChildren ? (\n <div className={clsx(!expanded && 'hidden')}>\n <SchemaTree nodes={node.children} depth={depth + 1} forceExpanded={forceExpanded} />\n </div>\n ) : null}\n </li>\n )\n}\n\ntype SchemaTreeProps = { nodes: SchemaTreeNode[]; depth?: number; forceExpanded?: boolean }\n\nfunction SchemaTree(arg0: SchemaTreeProps): ReactNode {\n const { nodes, depth = 0, forceExpanded = false } = 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 p-0',\n depth === 0\n ? 'divide-y divide-(--clarify-theme-tokens-colors-border)'\n : 'ml-2 border-l border-(--clarify-theme-tokens-colors-border) pl-2',\n )}\n >\n {nodes.map((node) => <SchemaNode key={node.key} node={node} depth={depth} defaultExpanded={node.defaultExpanded} forceExpanded={forceExpanded} />)}\n </ul>\n )\n}\n\nfunction markSchemaNodesVisibility(nodes: SchemaTreeNode[], query: string): SchemaTreeNode[] {\n if (!query) return nodes.map((node) => ({ ...node, visible: true, children: markSchemaNodesVisibility(node.children, query) }))\n\n return nodes.map((node) => {\n const children = markSchemaNodesVisibility(node.children, query)\n const searchableText = getSchemaSearchText(node.name, {\n type: node.type,\n description: node.description,\n pattern: node.details,\n })\n return { ...node, visible: fuzzyMatch(searchableText, query) || children.some((child) => child.visible), children }\n })\n}\n\ntype SchemaPropertiesProps = {\n title: string\n schema: unknown\n spec: OpenAPISpec\n defaultExpanded?: boolean\n query?: string\n emptyText?: string\n}\n\nexport function SchemaProperties(arg0: SchemaPropertiesProps): ReactNode {\n const { title, schema, spec, defaultExpanded, query = '', emptyText } = arg0\n const t = useBuiltInText()\n\n const root = getRootSchemaNode(spec, schema, defaultExpanded)\n\n if (!root || root.children.length === 0) return null\n\n const normalizedQuery = query.trim()\n const nodes = markSchemaNodesVisibility(root.children, normalizedQuery)\n const hasQuery = Boolean(normalizedQuery)\n const hasVisibleNodes = nodes.some((node) => node.visible)\n const resolvedEmptyText = emptyText ?? t('openapi.noBodyProperties')\n\n return (\n <OpenApiDocumentSection title={title} level={4} bodyClassName=\"clarify-schema-properties not-prose\">\n <SchemaTree nodes={nodes} forceExpanded={hasQuery} />\n <p className={clsx('m-0 py-2 text-sm/5 text-(--clarify-ui-text-soft)', hasVisibleNodes && 'hidden')}>{resolvedEmptyText}</p>\n </OpenApiDocumentSection>\n )\n}\n\ntype ParameterListProps = { title: string; parameters: OpenApiParameter[] }\n\nexport function ParameterList(arg0: ParameterListProps): ReactNode {\n const t = useBuiltInText()\n const { title, parameters } = arg0\n\n if (parameters.length === 0) return null\n\n return (\n <OpenApiDocumentSection title={title} bodyClassName=\"not-prose\">\n <Properties spacingClassName=\"m-0\">\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 ? <Markdown className=\"*:first:mt-0 *:last:mb-0\">{parameter.description}</Markdown> : t('openapi.operationParameter')}\n </Property>\n ))}\n </Properties>\n </OpenApiDocumentSection>\n )\n}\n\ntype ResponseListProps = {\n title?: string\n operation: OpenAPIOperation\n spec?: OpenAPISpec\n selectedStatus?: string\n onSelectStatus?: (value: string) => void\n query?: string\n search?: {\n action: ReactNode\n input: ReactNode\n open: boolean\n }\n}\n\ntype RenderResponsePanelArgs = {\n status: string\n response: OpenApiResponse\n}\n\nexport function ResponseList(arg0: ResponseListProps): ReactNode {\n const { title, operation, spec, selectedStatus, onSelectStatus, query = '', search } = arg0\n\n const t = useBuiltInText()\n const responses = getResponseEntries(operation, spec)\n const orderedResponses = [...responses].sort((left, right) => {\n if (left.status === 'default') return -1\n if (right.status === 'default') return 1\n\n const leftCode = Number(left.status)\n const rightCode = Number(right.status)\n\n if (!Number.isNaN(leftCode) && !Number.isNaN(rightCode)) return leftCode - rightCode\n return left.status.localeCompare(right.status)\n })\n const activeStatus = selectedStatus ?? orderedResponses.find(({ status }) => status === 'default')?.status ?? orderedResponses.find(({ status }) => status.startsWith('2'))?.status ?? orderedResponses[0]?.status ?? ''\n const selectedIndex = Math.max(0, orderedResponses.findIndex(({ status }) => status === activeStatus))\n\n if (orderedResponses.length === 0) return null\n\n const renderResponsePanel = ({ status, response }: RenderResponsePanelArgs) => {\n const content = getJsonLikeContent(response.content, spec)\n const responseSchema = content?.value.schema\n const type = schemaToType(responseSchema)\n\n return (\n <div className=\"rounded-(--clarify-theme-tokens-radius-xl) p-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {orderedResponses.length === 1 ? <span className=\"text-sm/5 font-semibold text-(--clarify-theme-tokens-colors-foreground)\">{status}</span> : null}\n {type ? <span className=\"text-xs text-(--clarify-theme-tokens-colors-muted)\">{type}</span> : null}\n </div>\n <div className=\"mt-3 text-sm/6 text-(--clarify-ui-text-soft) *:first:mt-0 *:last:mb-0\">\n {response.description ? <Markdown className=\"*:first:mt-0 *:last:mb-0\">{response.description}</Markdown> : `${t('openapi.response')}.`}\n </div>\n {responseSchema && spec ? (\n <div className=\"mt-6\">\n <SchemaProperties\n title={t('openapi.responseBodyProperties')}\n schema={responseSchema}\n spec={spec}\n query={query}\n emptyText={t('openapi.noResponseBodyProperties')}\n />\n </div>\n ) : null}\n </div>\n )\n }\n\n if (orderedResponses.length === 1) {\n const [{ status, response }] = orderedResponses\n return (\n <OpenApiDocumentSection title={title ?? t('openapi.responses')} action={search?.action}>\n {search?.open ? search.input : null}\n {renderResponsePanel({ status, response })}\n </OpenApiDocumentSection>\n )\n }\n\n return (\n <OpenApiDocumentSection title={title ?? t('openapi.responses')} action={search?.action} bodyClassName=\"not-prose\">\n {search?.open ? search.input : null}\n <Tabs\n selectedIndex={selectedIndex}\n onChange={(index) => {\n onSelectStatus?.(orderedResponses[index]?.status ?? '')\n }}\n items={orderedResponses.map(({ status, response }) => ({\n id: status,\n label: status,\n panel: renderResponsePanel({ status, response }),\n }))}\n spacingClassName=\"m-0\"\n panelsClassName=\"mt-2\"\n />\n </OpenApiDocumentSection>\n )\n}\n","import clsx from 'clsx'\nimport { SearchIcon } from 'lucide-react'\nimport { useState, type ChangeEvent, type ReactNode } from 'react'\n\nexport function useSchemaSearch() {\n const [open, setOpen] = useState(false)\n const [query, setQuery] = useState('')\n\n return {\n open,\n query,\n onChange: (event: ChangeEvent<HTMLInputElement>) => setQuery(event.target.value),\n toggle: () => {\n setOpen((current) => {\n if (current) setQuery('')\n return !current\n })\n },\n }\n}\n\ntype SchemaSearchButtonProps = {\n label: string\n open: boolean\n onClick: () => void\n}\n\nexport function SchemaSearchButton(arg0: SchemaSearchButtonProps): ReactNode {\n const { label, open, onClick } = arg0\n\n return (\n <button\n type=\"button\"\n aria-label={label}\n aria-pressed={open}\n onClick={onClick}\n className={clsx(\n 'flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-(--clarify-theme-tokens-radius-md) transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)',\n open\n ? 'bg-(--clarify-ui-hover-background) text-(--clarify-theme-tokens-colors-primary)'\n : 'text-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)',\n )}\n >\n <SearchIcon className=\"size-4\" aria-hidden=\"true\" />\n </button>\n )\n}\n\ntype SchemaSearchInputProps = {\n label: string\n value: string\n onChange: (event: ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function SchemaSearchInput(arg0: SchemaSearchInputProps): ReactNode {\n const { label, value, onChange } = arg0\n\n return (\n <label className=\"not-prose mb-3 flex h-9 items-center gap-2 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-3 transition focus-within:border-(--clarify-theme-tokens-colors-primary) focus-within:ring-2 focus-within:ring-(--clarify-theme-tokens-colors-primary)/15\">\n <SearchIcon className=\"size-4 shrink-0 text-(--clarify-ui-text-faint)\" aria-hidden=\"true\" />\n <span className=\"sr-only\">{label}</span>\n <input\n type=\"search\"\n value={value}\n onChange={onChange}\n placeholder={label}\n autoFocus\n className=\"min-w-0 flex-1 bg-transparent text-sm text-(--clarify-theme-tokens-colors-foreground) outline-none placeholder:text-(--clarify-ui-text-faint)\"\n />\n </label>\n )\n}","import type { ReactNode } from 'react'\n\nimport { useBuiltInText } from '../../core/i18n'\nimport { Markdown } from '../../mdx/Markdown'\nimport { Col, Row } from '../../mdx/primitives'\nimport type { OpenAPIOperation, OpenAPIOperationSource, OpenAPISpec } from '../lib/utils'\nimport type { MediaTypeEntry, OpenApiParameter, OpenApiRecord, OpenApiServer, RequestAuthInputs } from '../types'\n\nimport { type AuthOption, RequestExamplesPanel, ResponseExamplesPanel } from './ExamplePanels'\nimport { OpenApiAuthDocumentation } from './OpenApiAuthDocumentation'\nimport { OpenApiDocumentSection } from './OpenApiDocumentSection'\nimport { ParameterList, ResponseList, SchemaProperties } from './SchemaProperties'\nimport { SchemaSearchButton, SchemaSearchInput, useSchemaSearch } from './SchemaSearch'\n\ntype EndpointRequestProps = {\n spec: OpenAPISpec\n path: string\n method: string\n operationSource?: OpenAPIOperationSource\n description?: string\n groupedParameters: {\n path: OpenApiParameter[]\n query: OpenApiParameter[]\n header: OpenApiParameter[]\n }\n parameters: OpenApiParameter[]\n requestBody?: OpenApiRecord\n requestContents: MediaTypeEntry[]\n requestSchema: unknown\n selectedRequestMediaType: string\n onSelectRequestMediaType: (value: string) => void\n selectedServer: OpenApiServer\n serverVariables: Record<string, string>\n authOptions: AuthOption[]\n auth?: RequestAuthInputs\n sharedExampleKey?: string\n onSelectExampleKey?: (value: string) => void\n}\n\nexport function EndpointRequest(arg0: EndpointRequestProps): ReactNode {\n const {\n spec,\n path,\n method,\n operationSource = 'path',\n description,\n groupedParameters,\n parameters,\n requestBody,\n requestContents,\n requestSchema,\n selectedRequestMediaType,\n onSelectRequestMediaType,\n selectedServer,\n serverVariables,\n authOptions,\n auth,\n sharedExampleKey,\n onSelectExampleKey,\n } = arg0\n\n const t = useBuiltInText()\n const hasRequestBody = Boolean(requestBody && requestContents.length > 0)\n const requestBodySearch = useSchemaSearch()\n\n const renderDescription = () => {\n if (!description) return null\n return <Markdown>{description}</Markdown>\n }\n\n const renderRequestBody = () => {\n if (!hasRequestBody) {\n return <p className=\"text-sm/5 text-(--clarify-ui-text-soft)\">{t('openapi.requestBodyEmpty')}</p>\n }\n\n return (\n <>\n {requestBodySearch.open ? (\n <SchemaSearchInput label={t('openapi.searchBodyProperties')} value={requestBodySearch.query} onChange={requestBodySearch.onChange} />\n ) : null}\n {typeof requestBody?.description === 'string' ? <Markdown>{requestBody.description}</Markdown> : null}\n <SchemaProperties title={t('openapi.bodyProperties')} schema={requestSchema} spec={spec} query={requestBodySearch.query} />\n </>\n )\n }\n\n return (\n <>\n {renderDescription()}\n <Row className=\"clarify-openapi-request-workspace relative mt-8 pt-6\">\n <Col>\n <div className=\"flex w-full flex-col gap-6\">\n <OpenApiAuthDocumentation options={authOptions} />\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 <OpenApiDocumentSection\n title={t('openapi.requestBody')}\n action={hasRequestBody ? <SchemaSearchButton label={t('openapi.searchBodyProperties')} open={requestBodySearch.open} onClick={requestBodySearch.toggle} /> : null}\n >\n {renderRequestBody()}\n </OpenApiDocumentSection>\n </div>\n </Col>\n <Col sticky>\n <div className=\"w-full\">\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 operationSource={operationSource}\n sharedExampleKey={sharedExampleKey}\n onSelectExampleKey={onSelectExampleKey}\n query={requestBodySearch.query}\n />\n </div>\n </Col>\n </Row>\n </>\n )\n}\n\ntype EndpointResponseProps = {\n spec: OpenAPISpec\n operation: OpenAPIOperation\n operationSource?: OpenAPIOperationSource\n sharedExampleKey?: string\n onSelectExampleKey?: (value: string) => void\n selectedStatus?: string\n onSelectStatus?: (value: string) => void\n}\n\nexport function EndpointResponse(arg0: EndpointResponseProps): ReactNode {\n const { spec, operation, operationSource = 'path', sharedExampleKey, onSelectExampleKey, selectedStatus, onSelectStatus } = arg0\n const t = useBuiltInText()\n const responseTitle = operationSource === 'webhook' ? t('openapi.webhookResponses') : t('openapi.responses')\n const responseExampleTitle = operationSource === 'webhook' ? t('openapi.webhookResponse') : t('openapi.response')\n const responseBodySearch = useSchemaSearch()\n\n return (\n <div className=\"mt-10 pt-6\">\n <Row className=\"clarify-openapi-response-workspace relative\">\n <Col>\n <div className=\"w-full\">\n <ResponseList\n title={responseTitle}\n operation={operation}\n spec={spec}\n selectedStatus={selectedStatus}\n onSelectStatus={onSelectStatus}\n query={responseBodySearch.query}\n search={{\n open: responseBodySearch.open,\n action: <SchemaSearchButton label={t('openapi.searchResponseBodyProperties')} open={responseBodySearch.open} onClick={responseBodySearch.toggle} />,\n input: <SchemaSearchInput label={t('openapi.searchResponseBodyProperties')} value={responseBodySearch.query} onChange={responseBodySearch.onChange} />,\n }}\n />\n </div>\n </Col>\n <Col sticky>\n <div className=\"w-full\">\n <ResponseExamplesPanel\n operation={operation}\n spec={spec}\n title={responseExampleTitle}\n sharedExampleKey={sharedExampleKey}\n onSelectExampleKey={onSelectExampleKey}\n selectedStatus={selectedStatus}\n onSelectStatus={onSelectStatus}\n query={responseBodySearch.query}\n />\n </div>\n </Col>\n </Row>\n </div>\n )\n}\n","import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype UiOption = {\n value: string\n label: string\n description?: string\n}\n\ntype InlineListboxProps = {\n label: string\n value: string\n options: UiOption[]\n onChange: (value: string) => void\n compact?: boolean\n buttonContent?: ReactNode\n buttonClassName?: string\n className?: string\n invalid?: boolean\n describedBy?: string\n disabled?: boolean\n title?: string\n}\n\ntype MultiInlineListboxProps = {\n label: string\n value: string[]\n options: UiOption[]\n onChange: (value: string[]) => void\n disabled?: boolean\n invalid?: boolean\n describedBy?: string\n}\n\ntype OptionContentProps = {\n option: UiOption\n}\n\nconst defaultButtonClassName = 'inline-flex min-w-0 items-center justify-between gap-1 border-0 bg-transparent font-medium text-(--clarify-ui-text-strong) outline-hidden transition hover:bg-(--clarify-ui-hover-background) focus:ring-2 focus:ring-inset focus:ring-(--clarify-theme-tokens-colors-primary) data-disabled:cursor-not-allowed data-open:bg-(--clarify-ui-active-background)'\nconst optionsClassName = 'z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-(--clarify-popover-max-width) overflow-auto rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-1 text-xs shadow-lg shadow-black/10 [--anchor-gap:--spacing(1)] focus:outline-none'\nconst optionClassName = 'group flex min-h-9 cursor-default items-center justify-between gap-3 rounded-(--clarify-theme-tokens-radius-md) px-2.5 py-2 text-xs text-(--clarify-ui-text) select-none data-focus:bg-(--clarify-ui-hover-background) data-focus:text-(--clarify-ui-text-strong) data-selected:bg-(--clarify-ui-active-background) data-selected:text-(--clarify-ui-accent-text)'\n\nfunction OptionContent(arg0: OptionContentProps): ReactNode {\n const { option } = arg0\n return (\n <>\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-(--clarify-ui-text-faint)\">{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 </>\n )\n}\n\nexport function InlineListbox(arg0: InlineListboxProps): ReactNode {\n const { label, value, options, onChange, compact = false, buttonContent, buttonClassName, className, invalid, describedBy, disabled = false, title } = arg0\n const selected = options.find((option) => option.value === value)\n\n return (\n <Listbox value={value} onChange={onChange} disabled={disabled}>\n <div className={clsx('pointer-events-auto relative inline-flex min-w-0 w-full', className)}>\n <ListboxButton\n aria-label={label}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n title={title}\n className={clsx(\n buttonClassName ?? defaultButtonClassName,\n buttonClassName ? null : compact ? 'min-h-7 max-w-32 px-2 py-0.5 text-xs' : 'min-h-8 w-full px-2 text-xs',\n )}\n >\n {buttonContent ?? (\n <>\n <span className=\"truncate\">{selected?.label ?? (value || label)}</span>\n <ChevronDownIcon className=\"h-3.5 w-3.5 shrink-0 text-(--clarify-ui-text-faint)\" aria-hidden=\"true\" />\n </>\n )}\n </ListboxButton>\n <ListboxOptions anchor=\"bottom start\" className={optionsClassName}>\n {options.map((option) => (\n <ListboxOption key={option.value} value={option.value} className={optionClassName}>\n <OptionContent option={option} />\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n )\n}\n\nexport function MultiInlineListbox(arg0: MultiInlineListboxProps): ReactNode {\n const { label, value, options, onChange, disabled = false, invalid, describedBy } = arg0\n const selected = options.filter((option) => value.includes(option.value))\n const selectedLabel = selected.map((option) => option.label).join(', ')\n\n return (\n <Listbox value={value} onChange={onChange} multiple disabled={disabled}>\n <div className=\"pointer-events-auto relative inline-flex min-w-0 w-full\">\n <ListboxButton aria-label={label} aria-invalid={invalid || undefined} aria-describedby={describedBy} className={clsx(defaultButtonClassName, 'min-h-8 w-full px-2 text-xs')}>\n <span className=\"truncate\">{selectedLabel || label}</span>\n <ChevronDownIcon className=\"h-3.5 w-3.5 shrink-0 text-(--clarify-ui-text-faint)\" aria-hidden=\"true\" />\n </ListboxButton>\n <ListboxOptions anchor=\"bottom start\" className={optionsClassName}>\n {options.map((option) => (\n <ListboxOption key={option.value} value={option.value} className={optionClassName}>\n <OptionContent option={option} />\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n )\n}\n","import { create } from 'zustand'\n\ntype OpenApiState = {\n credentials: Record<string, Record<string, string>>\n setCredential: (scope: string, name: string, value: string) => void\n clearCredential: (scope: string, name: string) => void\n clearCredentials: (scope: string) => void\n}\n\nconst credentialScopes = new WeakMap<object, string>()\nexport const emptyOpenApiCredentials: Readonly<Record<string, string>> = Object.freeze({})\nlet nextCredentialScope = 0\n\nexport function getOpenApiCredentialScope(spec: object): string {\n const current = credentialScopes.get(spec)\n if (current) return current\n const scope = `openapi-${nextCredentialScope += 1}`\n credentialScopes.set(spec, scope)\n return scope\n}\n\nexport const useOpenApiStore = create<OpenApiState>()((set) => ({\n credentials: {},\n setCredential: (scope, name, value) => set((state) => ({\n credentials: {\n ...state.credentials,\n [scope]: { ...state.credentials[scope], [name]: value },\n },\n })),\n clearCredential: (scope, name) => set((state) => {\n const scoped = { ...state.credentials[scope] }\n delete scoped[name]\n return { credentials: { ...state.credentials, [scope]: scoped } }\n }),\n clearCredentials: (scope) => set((state) => {\n const credentials = { ...state.credentials }\n delete credentials[scope]\n return { credentials }\n }),\n}))\n","import { useState } from 'react'\n\nimport { getMediaTypeEntries, getOperationParameters, getRequestBody } from '../lib/helpers'\nimport type { OpenAPIOperation, OpenAPIOperationSource, OpenAPISpec } from '../lib/utils'\nimport { emptyOpenApiCredentials, getOpenApiCredentialScope, useOpenApiStore } from '../store'\nimport type { OpenApiParameter, OpenApiServer, RequestAuthInputs } from '../types'\n\nimport { defaultServerVariables, getAuthOptions, getServerKey, getServers } from './ExamplePanels'\nimport type { AuthOption } from './ExamplePanels'\n\nexport type OperationRequestState = {\n parameters: OpenApiParameter[]\n requestBody: ReturnType<typeof getRequestBody>\n requestContents: ReturnType<typeof getMediaTypeEntries>\n selectedRequestMediaType: string\n setSelectedRequestMediaType: (value: string) => void\n requestSchema: unknown\n groupedParameters: {\n path: OpenApiParameter[]\n query: OpenApiParameter[]\n header: OpenApiParameter[]\n }\n}\n\nexport function useOperationRequestState(spec: OpenAPISpec, path: string, operation: OpenAPIOperation, source: OpenAPIOperationSource = 'path'): OperationRequestState {\n const parameters = getOperationParameters(spec, path, operation, source)\n const requestBody = getRequestBody(spec, operation)\n const requestContents = getMediaTypeEntries(requestBody?.content, spec)\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 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 parameters,\n requestBody,\n requestContents,\n selectedRequestMediaType: selectedRequestContent?.mediaType ?? '',\n setSelectedRequestMediaType,\n requestSchema,\n groupedParameters,\n }\n}\n\nexport type OperationServerState = {\n servers: OpenApiServer[]\n selectedServerKey: string\n selectedServer: OpenApiServer\n serverVariables: Record<string, string>\n serverOpen: boolean\n onSelectServer: (key: string) => void\n onChangeServerVariable: (name: string, value: string) => void\n onToggleServer: () => void\n closeServer: () => void\n}\n\nexport function useOperationServerState(spec: OpenAPISpec, operation: OpenAPIOperation, path: string, source: OpenAPIOperationSource = 'path'): OperationServerState {\n const servers = getServers(spec, operation, path, source)\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\n return {\n servers,\n selectedServerKey,\n selectedServer,\n serverVariables,\n serverOpen,\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: () => setServerOpen((current) => !current),\n closeServer: () => setServerOpen(false),\n }\n}\n\nexport type OperationAuthState = {\n authOptions: AuthOption[]\n selectedAuthName: string\n selectedAuth?: AuthOption\n authValues: Record<string, string>\n authOpen: boolean\n authInput?: RequestAuthInputs\n onSelectAuth: (name: string) => void\n onChangeAuthValue: (name: string, value: string) => void\n onClearAuthValue: (name: string) => void\n onClearAuthValues: () => void\n onToggleAuth: () => void\n closeAuth: () => void\n}\n\nexport function useOperationAuthState(spec: OpenAPISpec, operation: OpenAPIOperation): OperationAuthState {\n const authOptions = getAuthOptions(spec, operation)\n const [selectedAuthName, setSelectedAuthName] = useState(authOptions[0]?.key ?? '')\n const selectedAuth = authOptions.find((option) => option.key === selectedAuthName)\n const credentialScope = getOpenApiCredentialScope(spec)\n const authValues = useOpenApiStore((state) => state.credentials[credentialScope] ?? emptyOpenApiCredentials)\n const setCredential = useOpenApiStore((state) => state.setCredential)\n const clearCredential = useOpenApiStore((state) => state.clearCredential)\n const clearCredentials = useOpenApiStore((state) => state.clearCredentials)\n const [authOpen, setAuthOpen] = useState(false)\n const authInput: RequestAuthInputs | undefined = selectedAuth\n ? selectedAuth.schemes.map((option) => ({ name: option.name, scheme: option.scheme, value: authValues[option.name] ?? '' }))\n : undefined\n\n return {\n authOptions,\n selectedAuthName,\n selectedAuth,\n authValues,\n authOpen,\n authInput,\n onSelectAuth: setSelectedAuthName,\n onChangeAuthValue: (name, value) => setCredential(credentialScope, name, value),\n onClearAuthValue: (name) => clearCredential(credentialScope, name),\n onClearAuthValues: () => clearCredentials(credentialScope),\n onToggleAuth: () => setAuthOpen((current) => !current),\n closeAuth: () => setAuthOpen(false),\n }\n}\n","import type { OpenApiParameter, OpenApiSecurityScheme, OpenApiServer } from '../types'\n\nimport { joinPath } from './helpers'\n\nexport type ApiRequestAuth = {\n scheme: OpenApiSecurityScheme\n value: string\n}\n\nexport type ApiRequestInput = {\n method: string\n path: string\n server: OpenApiServer\n serverVariables?: Record<string, string>\n parameters: OpenApiParameter[]\n parameterValues: Record<string, string>\n parameterEnabled?: Record<string, boolean>\n auth?: ApiRequestAuth[]\n mediaType?: string\n body?: string\n bodyFiles?: Record<string, File>\n baseUrl?: string\n}\n\nexport type BuiltApiRequest = {\n url: string\n init: RequestInit\n}\n\nfunction parseBodyObject(body: string): Record<string, unknown> | undefined {\n try {\n const parsed = JSON.parse(body)\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) ? parsed : undefined\n } catch {\n return undefined\n }\n}\n\nfunction buildRequestBody(body: string, mediaType: string, files: Record<string, File>): BodyInit {\n if (files[''] && !mediaType.includes('multipart/form-data')) return files['']\n\n const values = parseBodyObject(body)\n if (mediaType.includes('application/x-www-form-urlencoded') && values) {\n const params = new URLSearchParams()\n Object.entries(values).forEach(([name, value]) => params.append(name, typeof value === 'string' ? value : JSON.stringify(value)))\n return params\n }\n\n if (mediaType.includes('multipart/form-data') && values) {\n const form = new FormData()\n Object.entries(values).forEach(([name, value]) => {\n const file = files[name]\n form.append(name, file ?? (typeof value === 'string' ? value : JSON.stringify(value)))\n })\n Object.entries(files).forEach(([name, file]) => {\n if (name && !(name in values)) form.append(name, file)\n })\n return form\n }\n\n if (mediaType.includes('multipart/form-data') && Object.keys(files).length > 0) {\n const form = new FormData()\n Object.entries(files).forEach(([name, file]) => form.append(name, file))\n return form\n }\n\n return body\n}\n\nfunction expandServerUrl(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 authorizationValue(auth: ApiRequestAuth): string | undefined {\n const scheme = auth.scheme.scheme?.toLowerCase()\n if (auth.scheme.type === 'http' && scheme === 'basic') return `Basic ${auth.value}`\n if (auth.scheme.type === 'http' && scheme === 'bearer') return `Bearer ${auth.value}`\n if (auth.scheme.type === 'oauth2' || auth.scheme.type === 'openIdConnect') return `Bearer ${auth.value}`\n return undefined\n}\n\nexport function parameterKey(parameter: OpenApiParameter): string {\n return `${parameter.in ?? 'query'}:${parameter.name ?? ''}`\n}\n\nfunction parseParameterValue(value: string): unknown {\n const trimmed = value.trim()\n if (!trimmed || (!trimmed.startsWith('[') && !trimmed.startsWith('{'))) return value\n\n try {\n return JSON.parse(trimmed)\n } catch {\n return value\n }\n}\n\nfunction primitiveValue(value: unknown): string {\n if (typeof value === 'string') return value\n if (value === null || typeof value === 'undefined') return ''\n return String(value)\n}\n\nfunction serializedParameterValues(parameter: OpenApiParameter, rawValue: string): Array<[string, string]> {\n const value = parseParameterValue(rawValue)\n const style = parameter.style ?? (parameter.in === 'query' || parameter.in === 'cookie' ? 'form' : 'simple')\n const explode = parameter.explode ?? style === 'form'\n\n if (Array.isArray(value)) {\n if (explode) return value.map((item) => [parameter.name ?? '', primitiveValue(item)])\n const delimiter = style === 'spaceDelimited' ? ' ' : style === 'pipeDelimited' ? '|' : ','\n return [[parameter.name ?? '', value.map(primitiveValue).join(delimiter)]]\n }\n\n if (typeof value === 'object' && value !== null) {\n const entries = Object.entries(value)\n if (parameter.style === 'deepObject') return entries.map(([key, item]) => [`${parameter.name}[${key}]`, primitiveValue(item)])\n if (explode) return entries.map(([key, item]) => [key, primitiveValue(item)])\n return [[parameter.name ?? '', entries.flatMap(([key, item]) => [key, primitiveValue(item)]).join(',')]]\n }\n\n return [[parameter.name ?? '', primitiveValue(value)]]\n}\n\nfunction pathParameterValue(parameter: OpenApiParameter, rawValue: string): string {\n const value = parseParameterValue(rawValue)\n const style = parameter.style ?? 'simple'\n const explode = parameter.explode ?? false\n const encode = (item: unknown) => encodeURIComponent(primitiveValue(item))\n\n if (Array.isArray(value)) {\n if (style === 'label') return `.${value.map(encode).join(explode ? '.' : ',')}`\n if (style === 'matrix') return explode\n ? value.map((item) => `;${parameter.name}=${encode(item)}`).join('')\n : `;${parameter.name}=${value.map(encode).join(',')}`\n return value.map(encode).join(',')\n }\n\n if (typeof value === 'object' && value !== null) {\n const entries = Object.entries(value)\n if (style === 'label') return explode\n ? `.${entries.map(([key, item]) => `${encode(key)}=${encode(item)}`).join('.')}`\n : `.${entries.flatMap(([key, item]) => [encode(key), encode(item)]).join(',')}`\n if (style === 'matrix') return explode\n ? entries.map(([key, item]) => `;${encode(key)}=${encode(item)}`).join('')\n : `;${parameter.name}=${entries.flatMap(([key, item]) => [encode(key), encode(item)]).join(',')}`\n return explode\n ? entries.map(([key, item]) => `${encode(key)}=${encode(item)}`).join(',')\n : entries.flatMap(([key, item]) => [encode(key), encode(item)]).join(',')\n }\n\n const encoded = encode(value)\n if (style === 'label') return `.${encoded}`\n if (style === 'matrix') return `;${parameter.name}=${encoded}`\n return encoded\n}\n\nfunction headerParameterValue(parameter: OpenApiParameter, rawValue: string): string {\n const value = parseParameterValue(rawValue)\n if (Array.isArray(value)) return value.map(primitiveValue).join(',')\n if (typeof value === 'object' && value !== null) {\n const entries = Object.entries(value)\n return parameter.explode\n ? entries.map(([key, item]) => `${key}=${primitiveValue(item)}`).join(',')\n : entries.flatMap(([key, item]) => [key, primitiveValue(item)]).join(',')\n }\n return primitiveValue(value)\n}\n\nexport function buildApiRequest(input: ApiRequestInput): BuiltApiRequest {\n const headers = new Headers({ Accept: 'application/json' })\n const query = new URLSearchParams()\n let path = input.path\n\n for (const parameter of input.parameters) {\n if (!parameter.name) continue\n const key = parameterKey(parameter)\n if (input.parameterEnabled?.[key] === false) continue\n const value = input.parameterValues[key] ?? ''\n if (!value && !parameter.allowEmptyValue) continue\n\n if (parameter.in === 'path') path = path.replaceAll(`{${parameter.name}}`, pathParameterValue(parameter, value))\n if (parameter.in === 'query') serializedParameterValues(parameter, value).forEach(([name, item]) => query.append(name, item))\n if (parameter.in === 'header') headers.set(parameter.name, headerParameterValue(parameter, value))\n }\n\n for (const auth of input.auth ?? []) {\n if (!auth.value) continue\n if (auth.scheme.type === 'apiKey' && auth.scheme.in === 'query' && auth.scheme.name) {\n query.set(auth.scheme.name, auth.value)\n } else if (auth.scheme.type === 'apiKey' && auth.scheme.in === 'header' && auth.scheme.name) {\n headers.set(auth.scheme.name, auth.value)\n } else {\n const authorization = authorizationValue(auth)\n if (authorization) headers.set('Authorization', authorization)\n }\n }\n\n const url = new URL(joinPath(expandServerUrl(input.server, input.serverVariables ?? {}), path), input.baseUrl)\n query.forEach((value, key) => url.searchParams.append(key, value))\n\n const body = input.body?.trim() ?? ''\n const mediaType = input.mediaType || 'application/json'\n const hasBody = Boolean(body) || Object.keys(input.bodyFiles ?? {}).length > 0\n const requestBody = hasBody && input.method.toUpperCase() !== 'GET' && input.method.toUpperCase() !== 'HEAD'\n ? buildRequestBody(body, mediaType, input.bodyFiles ?? {})\n : undefined\n if (requestBody && !(requestBody instanceof FormData)) {\n headers.set('Content-Type', mediaType)\n }\n\n return {\n url: url.toString(),\n init: {\n method: input.method.toUpperCase(),\n headers,\n credentials: 'include',\n ...(requestBody ? { body: requestBody } : {}),\n },\n }\n}\n","import type { ReactNode } from 'react'\n\nimport { useBuiltInText } from '../../core/i18n'\n\nimport { authLabel, authPlaceholder } from './ExamplePanels'\nimport type { AuthOption } from './ExamplePanels'\nimport { InlineListbox } from './InlineListbox'\n\nexport type OpenApiAuthPanelProps = {\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 onClearAuthValue: (name: string) => void\n}\n\nexport function OpenApiAuthPanel(arg0: OpenApiAuthPanelProps): ReactNode {\n const { authOptions, selectedAuthName, selectedAuth, authValues, onSelectAuth, onChangeAuthValue, onClearAuthValue } = arg0\n const t = useBuiltInText()\n\n if (authOptions.length === 0) return null\n\n return (\n <div className=\"grid divide-y divide-(--clarify-theme-tokens-colors-border)\">\n <label className=\"grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,1fr)]\">\n <span className=\"flex min-h-8 items-center border-r border-(--clarify-theme-tokens-colors-border) px-2 font-mono text-xs text-(--clarify-ui-text-strong)\">Auth</span>\n <InlineListbox label=\"Auth\" value={selectedAuthName} options={authOptions.map((option) => ({ value: option.key, label: option.label || t('openapi.none') }))} onChange={onSelectAuth} />\n </label>\n {selectedAuth?.schemes.map((option) => (\n <label key={option.name} className=\"group grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,1fr)]\">\n <span className=\"flex min-h-8 items-center border-r border-(--clarify-theme-tokens-colors-border) px-2 font-mono text-xs text-(--clarify-ui-text-strong)\">{authLabel(option.name, option.scheme)}</span>\n <div className=\"flex min-w-0 items-center focus-within:bg-(--clarify-ui-hover-background)\">\n <input type=\"password\" value={authValues[option.name] ?? ''} placeholder={authPlaceholder(option)} onChange={(event) => onChangeAuthValue(option.name, event.target.value)} autoComplete=\"off\" className=\"h-8 min-w-0 flex-1 border-0 bg-transparent px-2 text-xs text-(--clarify-theme-tokens-colors-foreground) outline-hidden placeholder:text-(--clarify-ui-text-faint)\" />\n <button type=\"button\" onClick={() => onClearAuthValue(option.name)} className=\"mr-1 h-6 shrink-0 rounded-(--clarify-theme-tokens-radius-md) px-1 text-2xs font-medium text-(--clarify-ui-text-faint) opacity-0 transition-opacity hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary) group-hover:opacity-100\">{t('openapi.clear')}</button>\n </div>\n </label>\n ))}\n </div>\n )\n}\n","import type { ChangeEvent, ReactNode } from 'react'\n\nimport { isRecord, resolveSchema, schemaHasType, schemaToType } from '../lib/helpers'\nimport type { OpenAPISpec } from '../lib/utils'\nimport type { OpenApiMediaType } from '../types'\n\ntype OpenApiRequestBodyEditorProps = {\n spec: OpenAPISpec\n mediaType: string\n content?: OpenApiMediaType\n body: string\n files: Record<string, File>\n onBodyChange: (value: string) => void\n onFileChange: (name: string, file?: File) => void\n}\n\nfunction parseBodyRecord(body: string): Record<string, unknown> {\n try {\n const value = JSON.parse(body)\n return isRecord(value) ? value : {}\n } catch {\n return {}\n }\n}\n\nfunction isBinarySchema(schema: unknown): boolean {\n return isRecord(schema) && schema.format === 'binary'\n}\n\nfunction isTextMediaType(mediaType: string): boolean {\n return mediaType.startsWith('text/')\n || mediaType.includes('json')\n || mediaType.includes('xml')\n || mediaType.includes('yaml')\n || mediaType.includes('javascript')\n || mediaType.includes('form')\n}\n\nfunction isFormMediaType(mediaType: string): boolean {\n const normalized = mediaType.split(';', 1)[0].trim().toLowerCase()\n return normalized === 'application/x-www-form-urlencoded' || normalized === 'multipart/form-data'\n}\n\nfunction valueFromInput(schema: unknown, value: string): unknown {\n if (!isRecord(schema)) return value\n if (schemaHasType(schema, 'integer')) return value === '' ? '' : Number.parseInt(value, 10)\n if (schemaHasType(schema, 'number')) return value === '' ? '' : Number(value)\n if (schemaHasType(schema, 'boolean')) return value === 'true'\n if (schemaHasType(schema, 'array') || schemaHasType(schema, 'object')) {\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n }\n return value\n}\n\nexport function OpenApiRequestBodyEditor(arg0: OpenApiRequestBodyEditorProps): ReactNode {\n const { spec, mediaType, content, body, files, onBodyChange, onFileChange } = arg0\n const schema = resolveSchema(spec, content?.schema)\n const schemaRecord = isRecord(schema) ? schema : undefined\n const properties = isRecord(schemaRecord?.properties) ? schemaRecord.properties : undefined\n const required = new Set(Array.isArray(schemaRecord?.required) ? schemaRecord.required.map(String) : [])\n const values = parseBodyRecord(body)\n\n function updateProperty(name: string, propertySchema: unknown, value: string) {\n onBodyChange(JSON.stringify({ ...values, [name]: valueFromInput(propertySchema, value) }, null, 2))\n }\n\n function renderProperty(name: string, unresolvedSchema: unknown) {\n const propertySchema = resolveSchema(spec, unresolvedSchema)\n const propertyRecord = isRecord(propertySchema) ? propertySchema : undefined\n const type = schemaToType(propertySchema) ?? 'string'\n const value = values[name]\n const fieldId = `openapi-request-body-${name}`.replace(/[^a-zA-Z0-9_-]/g, '-')\n const options = Array.isArray(propertyRecord?.enum) ? propertyRecord.enum : []\n const structured = schemaHasType(propertySchema, 'array') || schemaHasType(propertySchema, 'object')\n const serializedValue = structured && typeof value !== 'undefined' ? JSON.stringify(value, null, 2) : String(value ?? '')\n\n let control: ReactNode\n if (isBinarySchema(propertySchema)) {\n control = <input id={fieldId} aria-label={name} type=\"file\" required={required.has(name)} onChange={(event: ChangeEvent<HTMLInputElement>) => onFileChange(name, event.target.files?.[0])} className=\"min-h-8 w-full px-2 py-1 text-xs text-(--clarify-theme-tokens-colors-foreground) file:mr-2 file:rounded-(--clarify-theme-tokens-radius-md) file:border file:border-(--clarify-theme-tokens-colors-border) file:bg-(--clarify-ui-subtle-background) file:px-2 file:py-1 file:text-xs file:text-(--clarify-ui-text-strong)\" />\n } else if (options.length > 0) {\n control = <select id={fieldId} aria-label={name} value={serializedValue} required={required.has(name)} onChange={(event) => updateProperty(name, propertySchema, event.target.value)} className=\"h-8 w-full border-0 bg-transparent px-2 font-mono text-xs text-(--clarify-theme-tokens-colors-foreground) outline-hidden focus:bg-(--clarify-ui-hover-background)\">{!required.has(name) ? <option value=\"\" /> : null}{options.map((option) => <option key={String(option)} value={String(option)}>{String(option)}</option>)}</select>\n } else if (schemaHasType(propertySchema, 'boolean')) {\n control = <input id={fieldId} aria-label={name} type=\"checkbox\" checked={value === true} onChange={(event) => updateProperty(name, propertySchema, String(event.target.checked))} className=\"size-4 accent-(--clarify-theme-tokens-colors-primary)\" />\n } else if (structured) {\n control = <textarea id={fieldId} aria-label={name} value={serializedValue} required={required.has(name)} rows={3} spellCheck={false} onChange={(event) => updateProperty(name, propertySchema, event.target.value)} className=\"w-full resize-y border-0 bg-transparent p-2 font-mono text-xs/5 text-(--clarify-theme-tokens-colors-foreground) outline-hidden focus:bg-(--clarify-ui-hover-background)\" />\n } else {\n const numeric = schemaHasType(propertySchema, 'integer') || schemaHasType(propertySchema, 'number')\n control = <input id={fieldId} aria-label={name} value={serializedValue} type={numeric ? 'number' : propertyRecord?.format === 'date' ? 'date' : propertyRecord?.format === 'date-time' ? 'datetime-local' : 'text'} required={required.has(name)} onChange={(event) => updateProperty(name, propertySchema, event.target.value)} className=\"h-8 w-full border-0 bg-transparent px-2 font-mono text-xs text-(--clarify-theme-tokens-colors-foreground) outline-hidden focus:bg-(--clarify-ui-hover-background)\" />\n }\n\n return (\n <div key={name} className=\"grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]\">\n <label htmlFor={fieldId} className=\"flex min-h-8 min-w-0 items-center gap-1.5 border-r border-(--clarify-theme-tokens-colors-border) px-2 text-xs text-(--clarify-ui-text-strong)\">\n <span className=\"truncate font-mono\">{name}</span>\n <span className=\"font-mono text-2xs text-(--clarify-ui-text-faint)\">{type}</span>\n {required.has(name) ? <span className=\"text-(--clarify-error-accent-text)\">*</span> : null}\n </label>\n <div className=\"flex min-w-0 items-center\">{control}{files[name] ? <span className=\"sr-only\">{files[name].name}</span> : null}</div>\n </div>\n )\n }\n\n if (properties && isFormMediaType(mediaType)) return <div className=\"divide-y divide-(--clarify-theme-tokens-colors-border)\">{Object.entries(properties).map(([name, propertySchema]) => renderProperty(name, propertySchema))}</div>\n\n if (isBinarySchema(schema) || !isTextMediaType(mediaType)) {\n return <div className=\"flex min-h-44 items-start p-3\"><input aria-label={mediaType} type=\"file\" onChange={(event: ChangeEvent<HTMLInputElement>) => onFileChange('', event.target.files?.[0])} className=\"w-full text-xs text-(--clarify-theme-tokens-colors-foreground) file:mr-2 file:rounded-(--clarify-theme-tokens-radius-md) file:border file:border-(--clarify-theme-tokens-colors-border) file:bg-(--clarify-ui-subtle-background) file:px-2 file:py-1 file:text-xs file:text-(--clarify-ui-text-strong)\" /></div>\n }\n\n return <textarea aria-label={mediaType} value={body} onChange={(event) => onBodyChange(event.target.value)} spellCheck={false} className=\"block h-full min-h-44 w-full resize-none border-0 bg-(--clarify-code-background) p-3 font-mono text-xs/5 text-(--clarify-code-text) outline-hidden focus:ring-2 focus:ring-inset focus:ring-(--clarify-theme-tokens-colors-primary)\" />\n}\n","import clsx from 'clsx'\nimport { ChevronDownIcon, InfoIcon } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\nimport { Tooltip } from '../../components/Tooltip'\nimport { useBuiltInText } from '../../core/i18n'\nimport { Markdown } from '../../mdx/Markdown'\nimport { isRecord, resolveSchema, schemaToType } from '../lib/helpers'\nimport type { RequestParameterIssue } from '../lib/request-parameters'\nimport type { OpenAPISpec } from '../lib/utils'\nimport type { OpenApiParameter } from '../types'\n\nimport { InlineListbox, MultiInlineListbox } from './InlineListbox'\n\ntype RequestFieldProps = {\n spec: OpenAPISpec\n parameter: OpenApiParameter\n value: string\n enabled: boolean\n onChange: (value: string) => void\n onEnabledChange: (enabled: boolean) => void\n issue?: RequestParameterIssue\n}\n\ntype RequestSectionProps = {\n title: string\n count?: number\n defaultOpen?: boolean\n actions?: ReactNode\n className?: string\n contentClassName?: string\n children: ReactNode\n}\n\nexport function RequestField(arg0: RequestFieldProps): ReactNode {\n const { spec, parameter, value, enabled, onChange, onEnabledChange, issue } = arg0\n const t = useBuiltInText()\n const schema = resolveSchema(spec, parameter.schema)\n const schemaRecord = isRecord(schema) ? schema : undefined\n const itemSchema = isRecord(schemaRecord?.items) ? schemaRecord.items : undefined\n const options = Array.isArray(schemaRecord?.enum) ? schemaRecord.enum.map(String) : []\n const itemOptions = Array.isArray(itemSchema?.enum) ? itemSchema.enum.map(String) : []\n const type = schemaToType(schema) ?? 'string'\n const description = parameter.description ?? (typeof schemaRecord?.description === 'string' ? schemaRecord.description : undefined)\n const structured = type.includes('[]') || type.includes('object')\n const boolean = type.includes('boolean')\n const numeric = type.includes('integer') || type.includes('number')\n const fieldId = `openapi-parameter-${parameter.in ?? 'query'}-${parameter.name ?? ''}`.replace(/[^a-zA-Z0-9_-]/g, '-')\n const issueText = issue === 'required' ? t('openapi.required') : issue ? t(`openapi.parameter${issue[0].toUpperCase()}${issue.slice(1)}` as Parameters<typeof t>[0]) : undefined\n const controlProps = {\n 'aria-label': parameter.name,\n 'aria-invalid': issue ? true as const : undefined,\n 'aria-describedby': issue ? `${fieldId}-issue` : undefined,\n disabled: !enabled,\n }\n const arrayValue = (() => {\n try {\n const parsed = JSON.parse(value)\n return Array.isArray(parsed) ? parsed.map(String) : []\n } catch {\n return []\n }\n })()\n const descriptionTip = description ? (\n <Tooltip\n content={<Markdown className=\"max-w-80 text-left *:first:mt-0 *:last:mb-0\">{description}</Markdown>}\n side=\"bottom\"\n className=\"mr-1 shrink-0 *:[[role=tooltip]]:w-80 *:[[role=tooltip]]:max-w-[min(20rem,calc(100vw-2rem))] *:[[role=tooltip]]:border *:[[role=tooltip]]:border-(--clarify-theme-tokens-colors-border) *:[[role=tooltip]]:bg-(--clarify-theme-tokens-colors-surface) *:[[role=tooltip]]:p-3 *:[[role=tooltip]]:text-(--clarify-ui-text) *:[[role=tooltip]]:shadow-xl\"\n triggerClassName=\"clarify-field-description-trigger clarify-ui-control inline-flex size-7 items-center justify-center rounded-md !border-b-0 text-(--clarify-ui-text-faint) transition-colors\"\n >\n <InfoIcon className=\"size-4\" aria-hidden=\"true\" />\n <span className=\"sr-only\">{t('openapi.fieldDescription')}</span>\n </Tooltip>\n ) : null\n\n return (\n <div className=\"group grid min-w-0 grid-cols-[2rem_minmax(0,1fr)] sm:grid-cols-[2rem_minmax(0,1fr)_minmax(0,1fr)] sm:items-stretch\">\n <div className=\"flex min-h-8 items-center justify-center border-r border-(--clarify-theme-tokens-colors-border)\">\n <input\n type=\"checkbox\"\n checked={enabled}\n disabled={parameter.required}\n onChange={(event) => onEnabledChange(event.target.checked)}\n aria-label={`${t('openapi.includeParameter')}: ${parameter.name ?? ''}`}\n className=\"size-3.5 shrink-0 accent-(--clarify-theme-tokens-colors-primary) disabled:cursor-not-allowed\"\n />\n </div>\n <div className=\"flex min-h-8 min-w-0 items-center border-r border-(--clarify-theme-tokens-colors-border) px-2\">\n <label htmlFor={fieldId} className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 text-xs text-(--clarify-ui-text-strong)\">\n <span className=\"truncate font-mono\">{parameter.name}</span>\n <span className=\"font-mono text-2xs text-(--clarify-ui-text-faint)\">{type}</span>\n {parameter.required ? <span className=\"text-(--clarify-error-accent-text)\">*</span> : null}\n </label>\n </div>\n <div className={clsx('col-start-2 flex min-w-0 items-center border-t border-(--clarify-theme-tokens-colors-border) sm:col-start-3 sm:row-start-1 sm:border-t-0', !enabled && 'bg-(--clarify-ui-subtle-background)')}>\n <div className=\"min-w-0 flex-1\">\n {itemOptions.length > 0 ? (\n <MultiInlineListbox label={parameter.name ?? ''} value={arrayValue} options={itemOptions.map((option) => ({ value: option, label: option }))} onChange={(next) => onChange(JSON.stringify(next))} invalid={Boolean(issue)} describedBy={issue ? `${fieldId}-issue` : undefined} disabled={!enabled} />\n ) : options.length > 0 ? (\n <InlineListbox label={parameter.name ?? ''} value={value} options={[...(parameter.required ? [] : [{ value: '', label: t('openapi.none') }]), ...options.map((option) => ({ value: option, label: option }))]} onChange={onChange} invalid={Boolean(issue)} describedBy={issue ? `${fieldId}-issue` : undefined} disabled={!enabled} />\n ) : boolean ? (\n <input {...controlProps} id={fieldId} type=\"checkbox\" checked={value === 'true'} onChange={(event) => onChange(String(event.target.checked))} className=\"size-4 accent-(--clarify-theme-tokens-colors-primary)\" />\n ) : structured ? (\n <textarea {...controlProps} id={fieldId} value={value} required={parameter.required} onChange={(event) => onChange(event.target.value)} rows={3} spellCheck={false} placeholder={type.includes('[]') ? '[]' : '{}'} className=\"w-full resize-y border-0 bg-transparent p-2 font-mono text-xs/5 text-(--clarify-theme-tokens-colors-foreground) outline-hidden aria-invalid:text-(--clarify-error-accent-text) focus:bg-(--clarify-ui-hover-background)\" />\n ) : (\n <input {...controlProps} id={fieldId} value={value} type={numeric ? 'number' : schemaRecord?.format === 'date' ? 'date' : schemaRecord?.format === 'date-time' ? 'datetime-local' : 'text'} required={parameter.required} onChange={(event) => onChange(event.target.value)} className=\"h-8 w-full border-0 bg-transparent px-2 font-mono text-xs text-(--clarify-theme-tokens-colors-foreground) outline-hidden transition placeholder:text-(--clarify-ui-text-faint) focus:bg-(--clarify-ui-hover-background) aria-invalid:text-(--clarify-error-accent-text)\" />\n )}\n </div>\n {descriptionTip}\n </div>\n {issueText ? <span id={`${fieldId}-issue`} className=\"col-start-2 border-t border-(--clarify-theme-tokens-colors-border) px-2 py-1 text-xs/5 font-medium text-(--clarify-error-accent-text) sm:col-start-3\">{issueText}</span> : null}\n </div>\n )\n}\n\nexport function RequestSection(arg0: RequestSectionProps): ReactNode {\n const { title, count, defaultOpen, actions, className, contentClassName, children } = arg0\n return (\n <details open={defaultOpen} className={clsx('group shrink-0 border-b border-(--clarify-theme-tokens-colors-border)', className)}>\n <summary className=\"flex min-h-11 cursor-pointer list-none items-center gap-2 bg-(--clarify-ui-subtle-background) px-2.5 text-sm font-medium text-(--clarify-ui-text-strong) hover:bg-(--clarify-ui-hover-background) group-open:border-b group-open:border-(--clarify-theme-tokens-colors-border)\">\n <ChevronDownIcon className=\"size-4 shrink-0 -rotate-90 transition group-open:rotate-0\" aria-hidden=\"true\" />\n <span className=\"flex-1\">{title}</span>\n {typeof count === 'number' ? <span className=\"font-mono text-xs text-(--clarify-ui-text-faint)\">{count}</span> : null}\n {actions ? <span className=\"flex items-center gap-1\" onClick={(event) => { event.preventDefault(); event.stopPropagation() }}>{actions}</span> : null}\n </summary>\n <div className={clsx('divide-y divide-(--clarify-theme-tokens-colors-border)', contentClassName)}>{children}</div>\n </details>\n )\n}\n","import clsx from 'clsx'\nimport { CheckIcon, CircleAlertIcon, CopyIcon, DownloadIcon, FileX2Icon, SearchIcon, SendIcon } from 'lucide-react'\nimport { useEffect, useRef, useState, type ReactNode } from 'react'\nimport { parse as parseYaml, stringify as stringifyYaml } from 'yaml'\n\nimport { HighlightedCode } from '../../components/HighlightedCode'\nimport { Tabs } from '../../components/Tabs'\nimport { useBuiltInText } from '../../core/i18n'\nimport { copyTextToClipboard } from '../../utils/clipboard'\nimport type { ApiResponseExchange } from '../lib/api-exchange'\n\nimport { RequestSection } from './OpenApiRequestFields'\n\ntype BodyMode = 'preview' | 'raw'\ntype BodyModeSelection = { exchange: ApiResponseExchange; mode: BodyMode }\n\ntype OpenApiResponseViewerProps = {\n exchange?: ApiResponseExchange\n error?: string\n}\n\ntype CopyButtonProps = {\n value: string\n}\n\ntype ResponsePreviewProps = { exchange: ApiResponseExchange }\ntype ResponseHeadersProps = { headers: Array<[string, string]> }\ntype ResponseMediaProps = { blob: Blob; type: 'image' | 'audio' | 'video' }\ntype TextPreview = { code: string; language: string }\ntype ResponseStateProps = {\n icon: typeof SendIcon\n title: string\n description: string\n tone?: 'default' | 'error'\n}\n\nfunction formatBytes(size: number): string {\n if (size < 1024) return `${size} B`\n if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KB`\n return `${(size / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction parseJson(value: string): unknown {\n try {\n return JSON.parse(value)\n } catch {\n return undefined\n }\n}\n\nconst textLanguages: Record<string, string> = {\n 'application/graphql': 'graphql',\n 'application/javascript': 'javascript',\n 'application/sql': 'sql',\n 'application/typescript': 'typescript',\n 'application/xml': 'xml',\n 'application/x-httpd-php': 'php',\n 'application/x-sh': 'shellscript',\n 'application/xhtml+xml': 'html',\n 'application/x-www-form-urlencoded': 'http',\n 'text/css': 'css',\n 'text/csv': 'csv',\n 'text/html': 'html',\n 'text/javascript': 'javascript',\n 'text/markdown': 'markdown',\n 'text/plain': 'text',\n 'text/xml': 'xml',\n}\n\nfunction normalizedMediaType(contentType: string): string {\n return contentType.split(';', 1)[0].trim().toLowerCase()\n}\n\nexport function getResponseTextPreview(contentType: string, body: string): TextPreview | undefined {\n const mediaType = normalizedMediaType(contentType)\n\n if (mediaType === 'application/json' || mediaType.endsWith('+json')) {\n const parsed = parseJson(body)\n return { code: typeof parsed === 'undefined' ? body : JSON.stringify(parsed, null, 2), language: 'json' }\n }\n\n if (mediaType === 'application/yaml' || mediaType === 'application/x-yaml' || mediaType === 'text/yaml' || mediaType === 'text/x-yaml' || mediaType.endsWith('+yaml')) {\n try {\n return { code: stringifyYaml(parseYaml(body)).trimEnd(), language: 'yaml' }\n } catch {\n return { code: body, language: 'yaml' }\n }\n }\n\n const language = textLanguages[mediaType]\n ?? (mediaType.startsWith('text/') ? mediaType.slice('text/'.length) || 'text' : undefined)\n\n return language ? { code: body, language } : undefined\n}\n\nexport function canPreviewResponse(contentType: string): boolean {\n const mediaType = normalizedMediaType(contentType)\n return Boolean(\n getResponseTextPreview(contentType, '')\n || mediaType.startsWith('image/')\n || mediaType.startsWith('audio/')\n || mediaType.startsWith('video/'),\n )\n}\n\nfunction ResponseState(arg0: ResponseStateProps): ReactNode {\n const { icon: Icon, title, description, tone = 'default' } = arg0\n const error = tone === 'error'\n\n return (\n <div className=\"grid min-h-56 flex-1 place-items-center px-6 py-10 text-center\" role={error ? 'alert' : 'status'}>\n <div className=\"max-w-sm\">\n <span className={clsx('mx-auto mb-3 grid size-10 place-items-center rounded-full border', error ? 'border-(--clarify-code-danger-border) bg-(--clarify-code-danger-background) text-(--clarify-code-danger)' : 'border-(--clarify-code-border) bg-(--clarify-code-control-background) text-(--clarify-code-muted)')}>\n <Icon className=\"size-4.5\" aria-hidden=\"true\" />\n </span>\n <p className={clsx('text-sm font-semibold', error ? 'text-(--clarify-code-danger)' : 'text-(--clarify-code-text)')}>{title}</p>\n <p className=\"mt-1 text-xs/5 text-(--clarify-code-faint)\">{description}</p>\n </div>\n </div>\n )\n}\n\nfunction CopyButton(arg0: CopyButtonProps): ReactNode {\n const { value } = arg0\n const t = useBuiltInText()\n const [copied, setCopied] = useState(false)\n\n async function copy() {\n const success = await copyTextToClipboard(value)\n setCopied(success)\n if (success) window.setTimeout(() => setCopied(false), 1600)\n }\n\n return (\n <button type=\"button\" onClick={copy} aria-label={copied ? t('actions.copied') : t('actions.copy')} title={copied ? t('actions.copied') : t('actions.copy')} className=\"grid size-8 shrink-0 place-items-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-code-muted) hover:bg-(--clarify-code-control-background-hover) hover:text-(--clarify-code-text) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)\">\n {copied ? <CheckIcon className=\"size-4 text-(--clarify-code-success)\" aria-hidden=\"true\" /> : <CopyIcon className=\"size-4\" aria-hidden=\"true\" />}\n </button>\n )\n}\n\nfunction ResponseMedia(arg0: ResponseMediaProps): ReactNode {\n const { blob, type } = arg0\n const elementRef = useRef<HTMLImageElement & HTMLAudioElement & HTMLVideoElement>(null)\n\n useEffect(() => {\n const element = elementRef.current\n if (!element) return\n const url = URL.createObjectURL(blob)\n element.src = url\n return () => {\n element.removeAttribute('src')\n URL.revokeObjectURL(url)\n }\n }, [blob])\n\n if (type === 'image') return <img ref={elementRef} alt=\"\" className=\"max-h-128 max-w-full object-contain\" />\n if (type === 'audio') return <audio ref={elementRef} controls className=\"w-full\" />\n return <video ref={elementRef} controls className=\"max-h-128 max-w-full\" />\n}\n\nfunction ResponsePreview(arg0: ResponsePreviewProps): ReactNode {\n const { exchange } = arg0\n const t = useBuiltInText()\n const contentType = normalizedMediaType(exchange.contentType)\n if (!exchange.size) return <ResponseState icon={FileX2Icon} title={t('openapi.responseBodyEmptyTitle')} description={t('openapi.responseBodyEmpty')} />\n if (contentType.startsWith('image/')) return <ResponseMedia blob={exchange.blob} type=\"image\" />\n if (contentType.startsWith('audio/')) return <ResponseMedia blob={exchange.blob} type=\"audio\" />\n if (contentType.startsWith('video/')) return <ResponseMedia blob={exchange.blob} type=\"video\" />\n if (contentType === 'text/html' || contentType === 'application/xhtml+xml') return <iframe srcDoc={exchange.body} sandbox=\"\" title=\"Response preview\" className=\"h-96 w-full border-0 bg-white\" />\n const textPreview = getResponseTextPreview(exchange.contentType, exchange.body)\n if (textPreview) return <pre className=\"max-h-128 overflow-auto whitespace-pre-wrap wrap-break-word font-mono text-xs/5\"><HighlightedCode code={textPreview.code} language={textPreview.language} /></pre>\n return <div className=\"grid min-h-56 place-items-center text-xs text-(--clarify-code-faint)\">{t('openapi.binaryPreview')}</div>\n}\n\nfunction ResponseHeaders(arg0: ResponseHeadersProps): ReactNode {\n const { headers: sourceHeaders } = arg0\n const t = useBuiltInText()\n const [query, setQuery] = useState('')\n const normalizedQuery = query.trim().toLowerCase()\n const headers = normalizedQuery ? sourceHeaders.filter(([name, value]) => `${name} ${value}`.toLowerCase().includes(normalizedQuery)) : sourceHeaders\n\n return (\n <div>\n <label className=\"flex h-9 items-center gap-2 border-b border-(--clarify-code-border) bg-(--clarify-code-control-background) px-3\">\n <SearchIcon className=\"size-4 shrink-0 text-(--clarify-code-muted)\" aria-hidden=\"true\" />\n <span className=\"sr-only\">{t('openapi.searchHeaders')}</span>\n <input value={query} onChange={(event) => setQuery(event.target.value)} placeholder={t('openapi.searchHeaders')} className=\"min-w-0 flex-1 bg-transparent text-xs text-(--clarify-code-text) outline-none placeholder:text-(--clarify-code-faint)\" />\n </label>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full min-w-96 table-fixed border-collapse text-left font-mono text-xs/5\">\n <thead className=\"bg-(--clarify-code-control-background) text-(--clarify-code-muted)\"><tr><th className=\"w-2/5 border-r border-(--clarify-code-border) px-3 py-2 font-semibold\">{t('openapi.headerName')}</th><th className=\"px-3 py-2 font-semibold\">{t('openapi.headerValue')}</th><th className=\"w-10\"><span className=\"sr-only\">{t('actions.copy')}</span></th></tr></thead>\n <tbody>{headers.map(([name, value], index) => <tr key={`${name}:${index}`} className=\"border-t border-(--clarify-code-border) hover:bg-(--clarify-code-control-background)\"><td className=\"break-all border-r border-(--clarify-code-border) px-3 py-2 align-top text-(--clarify-code-property)\">{name}</td><td className=\"break-all px-3 py-2 align-top text-(--clarify-code-text)\">{value}</td><td className=\"pr-1\"><CopyButton value={`${name}: ${value}`} /></td></tr>)}</tbody>\n </table>\n </div>\n {headers.length === 0 ? <p className=\"border-t border-(--clarify-code-border) py-8 text-center text-xs text-(--clarify-code-faint)\">{t('openapi.noHeaders')}</p> : null}\n </div>\n )\n}\n\nfunction HiddenCookies(): ReactNode {\n const t = useBuiltInText()\n return (\n <table className=\"w-full table-fixed border-collapse text-left text-xs/5\">\n <thead className=\"bg-(--clarify-code-control-background) text-(--clarify-code-muted)\"><tr><th className=\"w-2/5 border-r border-(--clarify-code-border) px-3 py-2 font-semibold\">{t('openapi.headerName')}</th><th className=\"px-3 py-2 font-semibold\">{t('openapi.headerValue')}</th></tr></thead>\n <tbody><tr className=\"border-t border-(--clarify-code-border)\"><td colSpan={2} className=\"px-3 py-5 text-center text-(--clarify-code-faint)\">{t('openapi.cookiesBrowserHidden')}</td></tr></tbody>\n </table>\n )\n}\n\nexport function OpenApiResponseViewer(arg0: OpenApiResponseViewerProps): ReactNode {\n const { exchange, error } = arg0\n const t = useBuiltInText()\n const [bodyModeSelection, setBodyModeSelection] = useState<BodyModeSelection>()\n const previewAvailable = exchange ? canPreviewResponse(exchange.contentType) : false\n const selectedBodyMode = bodyModeSelection && bodyModeSelection.exchange === exchange ? bodyModeSelection.mode : 'preview'\n const activeBodyMode = previewAvailable ? selectedBodyMode : 'raw'\n const bodyModes = (['preview', 'raw'] as BodyMode[]).filter(mode => mode === 'raw' || previewAvailable)\n\n function downloadBody() {\n if (!exchange) return\n const url = URL.createObjectURL(exchange.blob)\n const anchor = document.createElement('a')\n anchor.href = url\n anchor.download = `response.${exchange.contentType.includes('json') ? 'json' : 'bin'}`\n anchor.click()\n URL.revokeObjectURL(url)\n }\n\n return (\n <section className=\"clarify-api-response flex h-full min-h-96 min-w-0 flex-col bg-(--clarify-code-background) text-(--clarify-code-text)\" aria-label={t('openapi.response')}>\n <div className=\"sticky top-0 z-10 flex min-h-11 flex-wrap items-center gap-2 border-b border-(--clarify-code-border) bg-(--clarify-code-header-background) px-2.5 text-sm font-medium\">\n <span className=\"mr-auto text-(--clarify-code-text)\">{t('openapi.response')}</span>\n {exchange ? <><span className=\"text-xs font-semibold text-(--clarify-code-muted)\">{exchange.duration} ms</span><span className=\"text-xs text-(--clarify-code-faint)\">{formatBytes(exchange.size)}</span><span className={clsx('size-2 rounded-full', exchange.status < 400 ? 'bg-(--clarify-code-success)' : 'bg-(--clarify-code-danger)')} /><span className={clsx('text-xs font-semibold', exchange.status < 400 ? 'text-(--clarify-code-success)' : 'text-(--clarify-code-danger)')}>{exchange.status} {exchange.statusText}</span></> : null}\n </div>\n {error ? <ResponseState icon={CircleAlertIcon} title={t('openapi.responseErrorTitle')} description={error} tone=\"error\" /> : null}\n {!error && !exchange ? <ResponseState icon={SendIcon} title={t('openapi.responseEmptyTitle')} description={t('openapi.responseEmpty')} /> : null}\n {exchange ? <div className=\"min-h-0 flex-1 overflow-auto\">\n <RequestSection title={t('openapi.cookies')} count={0}>\n <HiddenCookies />\n </RequestSection>\n <RequestSection title={t('openapi.requestHeaders')} count={exchange.request.headers.length}>\n <ResponseHeaders headers={exchange.request.headers} />\n </RequestSection>\n <RequestSection title={t('openapi.responseHeaders')} count={exchange.headers.length}>\n <ResponseHeaders headers={exchange.headers} />\n </RequestSection>\n <RequestSection title={t('openapi.body')} defaultOpen actions={<span className=\"font-mono text-2xs font-normal text-(--clarify-code-faint)\">{exchange.contentType || t('openapi.unknownContentType')}</span>}>\n <Tabs\n items={bodyModes.map(mode => ({\n id: mode,\n label: mode === 'preview' ? t('openapi.preview') : t('openapi.raw'),\n panel: mode === 'preview'\n ? <ResponsePreview exchange={exchange} />\n : exchange.size\n ? <pre className=\"max-h-128 overflow-auto whitespace-pre-wrap wrap-break-word font-mono text-xs/5\">{exchange.body}</pre>\n : <div className=\"py-8 text-center text-xs text-(--clarify-code-faint)\">{t('openapi.responseBodyEmpty')}</div>,\n }))}\n selectedIndex={bodyModes.indexOf(activeBodyMode)}\n onChange={(index) => setBodyModeSelection({ exchange, mode: bodyModes[index] ?? 'raw' })}\n spacingClassName=\"m-0 min-h-72\"\n panelsClassName=\"p-4\"\n variant=\"code\"\n actions={<><CopyButton value={exchange.body} /><button type=\"button\" onClick={downloadBody} aria-label={t('openapi.downloadBody')} title={t('openapi.downloadBody')} className=\"grid size-8 shrink-0 place-items-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-code-muted) transition hover:bg-(--clarify-code-control-background-hover) hover:text-(--clarify-code-text) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)\"><DownloadIcon className=\"size-4\" aria-hidden=\"true\" /></button></>}\n />\n </RequestSection>\n </div> : null}\n </section>\n )\n}\n","import { LoaderCircleIcon, SendIcon } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype SendRequestButtonProps = {\n label: string\n busy?: boolean\n text?: string\n onClick: () => void\n}\n\nexport function SendRequestButton(arg0: SendRequestButtonProps): ReactNode {\n const { label, busy = false, text, onClick } = arg0\n const showText = Boolean(text)\n\n return (\n <button\n type=\"button\"\n disabled={busy}\n aria-label={label}\n title={label}\n onClick={onClick}\n className={showText\n ? 'flex h-8 shrink-0 items-center gap-1.5 rounded bg-(--clarify-theme-tokens-colors-foreground) px-3 text-xs font-semibold text-(--clarify-theme-tokens-colors-background) transition hover:opacity-85 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-foreground) focus-visible:ring-offset-2 disabled:cursor-wait disabled:opacity-60'\n : 'grid size-7 shrink-0 place-items-center rounded bg-(--clarify-ui-accent-background) text-(--clarify-ui-accent-text) ring-1 ring-inset ring-(--clarify-ui-accent-border) transition-colors hover:bg-(--clarify-theme-tokens-colors-foreground) hover:text-(--clarify-theme-tokens-colors-background) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-foreground) focus-visible:ring-offset-2 disabled:cursor-wait disabled:opacity-60'}\n >\n {busy ? <LoaderCircleIcon className=\"size-4 animate-spin\" aria-hidden=\"true\" /> : <SendIcon className=\"size-4\" aria-hidden=\"true\" />}\n {text}\n </button>\n )\n}\n","import type { BuiltApiRequest } from './api-request'\n\nexport type ApiRequestSnapshot = {\n url: string\n method: string\n headers: Array<[string, string]>\n body?: string\n}\n\nexport type ApiResponseExchange = {\n request: ApiRequestSnapshot\n status: number\n statusText: string\n url: string\n redirected: boolean\n duration: number\n size: number\n headers: Array<[string, string]>\n contentType: string\n body: string\n blob: Blob\n}\n\nexport type ExecuteApiRequestOptions = {\n signal?: AbortSignal\n fetch?: typeof fetch\n now?: () => number\n}\n\nexport class ApiRequestError extends Error {\n readonly category: 'network'\n\n constructor(message: string, options?: ErrorOptions) {\n super(message, options)\n this.name = 'ApiRequestError'\n this.category = 'network'\n }\n}\n\nfunction requestBodySnapshot(body: BodyInit | null | undefined): string | undefined {\n if (typeof body === 'string') return body\n if (body instanceof URLSearchParams) return body.toString()\n return undefined\n}\n\nfunction requestSnapshot(request: BuiltApiRequest): ApiRequestSnapshot {\n return {\n url: request.url,\n method: request.init.method ?? 'GET',\n headers: Array.from(new Headers(request.init.headers).entries()),\n body: requestBodySnapshot(request.init.body),\n }\n}\n\nexport async function executeApiRequest(request: BuiltApiRequest, options: ExecuteApiRequestOptions = {}): Promise<ApiResponseExchange> {\n const fetchRequest = options.fetch ?? fetch\n const now = options.now ?? (() => performance.now())\n const startedAt = now()\n let response: Response\n\n try {\n response = await fetchRequest(request.url, { ...request.init, signal: options.signal })\n } catch (cause) {\n if (cause instanceof DOMException && cause.name === 'AbortError') throw cause\n const message = cause instanceof Error ? cause.message : String(cause)\n throw new ApiRequestError(message, { cause })\n }\n\n const blob = await response.blob()\n\n return {\n request: requestSnapshot(request),\n status: response.status,\n statusText: response.statusText,\n url: response.url || request.url,\n redirected: response.redirected,\n duration: Math.round(now() - startedAt),\n size: blob.size,\n headers: Array.from(response.headers.entries()),\n contentType: response.headers.get('content-type') ?? blob.type,\n body: await blob.text(),\n blob,\n }\n}\n","import type { OpenApiParameter } from '../types'\n\nimport { parameterKey } from './api-request'\nimport { isRecord, resolveSchema, schemaToType } from './helpers'\nimport type { OpenAPISpec } from './utils'\n\nexport type RequestParameterIssue = 'required' | 'invalidArray' | 'invalidObject' | 'invalidNumber' | 'invalidInteger' | 'invalidDate' | 'invalidDateTime' | 'invalidEnum'\n\nfunction structuredIssue(value: string, type: string): RequestParameterIssue | undefined {\n if (!type.includes('[]') && !type.includes('object')) return undefined\n\n try {\n const parsed = JSON.parse(value)\n if (type.includes('[]') && !Array.isArray(parsed)) return 'invalidArray'\n if (type.includes('object') && !isRecord(parsed)) return 'invalidObject'\n } catch {\n return type.includes('[]') ? 'invalidArray' : 'invalidObject'\n }\n\n return undefined\n}\n\nfunction scalarIssue(value: string, type: string, format: unknown): RequestParameterIssue | undefined {\n if (type.includes('integer') && !Number.isInteger(Number(value))) return 'invalidInteger'\n if (type.includes('number') && !Number.isFinite(Number(value))) return 'invalidNumber'\n if (format === 'date' && !/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) return 'invalidDate'\n if (format === 'date-time' && Number.isNaN(Date.parse(value))) return 'invalidDateTime'\n return undefined\n}\n\nexport function validateRequestParameter(spec: OpenAPISpec, parameter: OpenApiParameter, value: string): RequestParameterIssue | undefined {\n if (!value) return parameter.required ? 'required' : undefined\n\n const schema = resolveSchema(spec, parameter.schema)\n const schemaRecord = isRecord(schema) ? schema : undefined\n const type = schemaToType(schema) ?? 'string'\n const options = Array.isArray(schemaRecord?.enum) ? schemaRecord.enum.map(String) : []\n\n if (options.length > 0 && !options.includes(value)) return 'invalidEnum'\n return structuredIssue(value, type) ?? scalarIssue(value, type, schemaRecord?.format)\n}\n\nexport function validateRequestParameters(spec: OpenAPISpec, parameters: OpenApiParameter[], values: Record<string, string>): Record<string, RequestParameterIssue> {\n return Object.fromEntries(parameters.filter((parameter) => parameter.in !== 'cookie').flatMap((parameter) => {\n const key = parameterKey(parameter)\n const issue = validateRequestParameter(spec, parameter, values[key] ?? '')\n return issue ? [[key, issue]] : []\n }))\n}\n","import { useEffect, useRef, useState } from 'react'\n\nimport { executeApiRequest, type ApiResponseExchange } from '../lib/api-exchange'\nimport { parameterKey } from '../lib/api-request'\nimport { getExampleEntries, getMediaTypeEntries, getParameterExampleEntries, getRequestBody, isRecord, resolveSchema, stringifyExample } from '../lib/helpers'\nimport { validateRequestParameters, type RequestParameterIssue } from '../lib/request-parameters'\nimport type { OpenAPIOperation, OpenAPIOperationSource, OpenAPISpec } from '../lib/utils'\nimport { emptyOpenApiCredentials, getOpenApiCredentialScope, useOpenApiStore } from '../store'\nimport type { OpenApiMediaType, OpenApiParameter } from '../types'\n\nimport { defaultServerVariables, getAuthOptions, getServerKey, getServers } from './ExamplePanels'\n\nexport function initialRequestBody(spec: OpenAPISpec, content?: OpenApiMediaType): string {\n const example = getExampleEntries(content, spec)[0]\n if (!example?.generated) return stringifyExample(example?.value)\n\n const schema = resolveSchema(spec, content?.schema)\n if (isRecord(schema) && schema.format === 'binary') return ''\n if (!isRecord(example.value) || !isRecord(schema) || !isRecord(schema.properties)) return stringifyExample(example.value)\n\n const value = { ...example.value }\n Object.entries(schema.properties).forEach(([name, propertySchema]) => {\n const resolved = resolveSchema(spec, propertySchema)\n if (isRecord(resolved) && resolved.format === 'binary') delete value[name]\n })\n return stringifyExample(value)\n}\n\nexport function requestBodyForExample(spec: OpenAPISpec, content: OpenApiMediaType | undefined, exampleKey: string): string {\n const example = getExampleEntries(content, spec).find((entry) => !entry.generated && entry.key === exampleKey)\n return example ? stringifyExample(example.value) : initialRequestBody(spec, content)\n}\n\nexport function useOpenApiRequestTarget(spec: OpenAPISpec, path: string, operation: OpenAPIOperation, operationSource: OpenAPIOperationSource, requestExample = '') {\n const servers = getServers(spec, operation, path, operationSource)\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 authOptions = getAuthOptions(spec, operation)\n const [selectedAuthName, setSelectedAuthName] = useState(authOptions[0]?.key ?? '')\n const selectedAuth = authOptions.find((option) => option.key === selectedAuthName)\n const credentialScope = getOpenApiCredentialScope(spec)\n const credentials = useOpenApiStore((state) => state.credentials[credentialScope] ?? emptyOpenApiCredentials)\n const setCredential = useOpenApiStore((state) => state.setCredential)\n const clearCredential = useOpenApiStore((state) => state.clearCredential)\n const requestContents = getMediaTypeEntries(getRequestBody(spec, operation)?.content, spec)\n const [mediaType, setMediaType] = useState(requestContents[0]?.mediaType ?? '')\n const selectedContent = requestContents.find((entry) => entry.mediaType === mediaType) ?? requestContents[0]\n const [body, setBody] = useState(requestBodyForExample(spec, selectedContent?.value, requestExample))\n const [bodyFiles, setBodyFiles] = useState<Record<string, File>>({})\n\n function selectServer(value: string) {\n const nextServer = servers.find((server, index) => getServerKey(server, index) === value) ?? servers[0]\n setSelectedServerKey(value)\n setServerVariables(defaultServerVariables(nextServer))\n }\n\n function selectMediaType(value: string) {\n const content = requestContents.find((entry) => entry.mediaType === value)?.value\n setMediaType(value)\n setBody(initialRequestBody(spec, content))\n setBodyFiles({})\n }\n\n function applyBodyExample(exampleKey: string) {\n setBody(requestBodyForExample(spec, selectedContent?.value, exampleKey))\n setBodyFiles({})\n }\n\n function setBodyFile(name: string, file?: File) {\n setBodyFiles((current) => {\n const next = { ...current }\n if (file) next[name] = file\n else delete next[name]\n return next\n })\n }\n\n return {\n servers,\n selectedServer,\n selectedServerKey,\n serverVariables,\n setServerVariables,\n serverVariableEntries: Object.entries(selectedServer.variables ?? {}),\n selectServer,\n authOptions,\n selectedAuthName,\n setSelectedAuthName,\n selectedAuth,\n credentialScope,\n credentials,\n setCredential,\n clearCredential,\n requestContents,\n mediaType,\n selectedContent,\n body,\n setBody,\n bodyFiles,\n setBodyFile,\n applyBodyExample,\n selectMediaType,\n }\n}\n\nexport function useOpenApiParameterState(spec: OpenAPISpec, parameters: OpenApiParameter[], initialParameterValue: (parameter: OpenApiParameter) => string, initialExampleKey = '') {\n const [parameterValues, setParameterValues] = useState<Record<string, string>>(() => Object.fromEntries(parameters.map((parameter) => {\n const example = getParameterExampleEntries(parameter).find((entry) => entry.key === initialExampleKey)\n return [parameterKey(parameter), example ? stringifyExample(example.value) : initialParameterValue(parameter)]\n })))\n const [parameterEnabled, setParameterEnabled] = useState<Record<string, boolean>>(() => Object.fromEntries(parameters.map((parameter) => [parameterKey(parameter), true])))\n const [parameterIssues, setParameterIssues] = useState<Record<string, RequestParameterIssue>>({})\n\n function setParameterGroupValues(grouped: OpenApiParameter[], mode: 'reset' | 'clear') {\n const keys = new Set(grouped.map(parameterKey))\n setParameterValues((current) => ({ ...current, ...Object.fromEntries(grouped.map((parameter) => [parameterKey(parameter), mode === 'reset' ? initialParameterValue(parameter) : ''])) }))\n setParameterIssues((current) => Object.fromEntries(Object.entries(current).filter(([key]) => !keys.has(key))))\n }\n\n function setParameterIncluded(parameter: OpenApiParameter, enabled: boolean) {\n const key = parameterKey(parameter)\n setParameterEnabled((current) => ({ ...current, [key]: enabled }))\n if (!enabled) setParameterIssues((current) => { const next = { ...current }; delete next[key]; return next })\n }\n\n function updateParameterValue(parameter: OpenApiParameter, value: string) {\n const key = parameterKey(parameter)\n setParameterValues((current) => ({ ...current, [key]: value }))\n setParameterIssues((current) => { const next = { ...current }; delete next[key]; return next })\n }\n\n function applyParameterExample(exampleKey: string) {\n setParameterValues(Object.fromEntries(parameters.map((parameter) => {\n const example = getParameterExampleEntries(parameter).find((entry) => entry.key === exampleKey)\n return [parameterKey(parameter), example ? stringifyExample(example.value) : initialParameterValue(parameter)]\n })))\n setParameterIssues({})\n }\n\n function validate(parametersToValidate: OpenApiParameter[]) {\n const issues = validateRequestParameters(spec, parametersToValidate, parameterValues)\n setParameterIssues(issues)\n return issues\n }\n\n return { parameterValues, parameterEnabled, parameterIssues, setParameterGroupValues, setParameterIncluded, updateParameterValue, applyParameterExample, validate }\n}\n\nexport function useOpenApiRequestExecution() {\n const [exchange, setExchange] = useState<ApiResponseExchange>()\n const [error, setError] = useState('')\n const [sending, setSending] = useState(false)\n const requestController = useRef<AbortController>(null)\n useEffect(() => () => requestController.current?.abort(), [])\n\n async function execute(request: Parameters<typeof executeApiRequest>[0], corsHint: string) {\n requestController.current?.abort()\n const controller = new AbortController()\n requestController.current = controller\n setSending(true)\n setError('')\n setExchange(undefined)\n try {\n setExchange(await executeApiRequest(request, { signal: controller.signal }))\n } catch (cause) {\n if (cause instanceof DOMException && cause.name === 'AbortError') return\n const message = cause instanceof Error ? cause.message : String(cause)\n setError(`${message}. ${corsHint}`)\n } finally {\n if (requestController.current === controller) {\n requestController.current = null\n setSending(false)\n }\n }\n }\n\n return { exchange, error, sending, execute }\n}\n","import { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { EraserIcon, RotateCcwIcon, ServerIcon, XIcon } from 'lucide-react'\nimport { type ReactNode, useState } from 'react'\n\nimport { useBuiltInText } from '../../core/i18n'\nimport { buildApiRequest, parameterKey } from '../lib/api-request'\nimport { getOperationParameters, getRequestExampleEntries, isRecord, resolveSchema, stringifyExample } from '../lib/helpers'\nimport type { OpenAPIOperation, OpenAPIOperationSource, OpenAPISpec } from '../lib/utils'\nimport type { OpenApiParameter } from '../types'\n\nimport { EndpointMethodBadge } from './EndpointMethodBadge'\nimport { getServerKey } from './ExamplePanels'\nimport { InlineListbox } from './InlineListbox'\nimport { OpenApiAuthPanel } from './OpenApiAuthPanel'\nimport { OpenApiRequestBodyEditor } from './OpenApiRequestBodyEditor'\nimport { RequestField, RequestSection } from './OpenApiRequestFields'\nimport { OpenApiResponseViewer } from './OpenApiResponseViewer'\nimport { SendRequestButton } from './SendRequestButton'\nimport { useOpenApiParameterState, useOpenApiRequestExecution, useOpenApiRequestTarget } from './useOpenApiRequestState'\n\ntype OpenApiRequestWorkbenchProps = {\n spec: OpenAPISpec\n path: string\n method: string\n operation: OpenAPIOperation\n operationSource?: OpenAPIOperationSource\n requestExample?: string\n compact?: boolean\n onClose?: () => void\n}\n\ntype OpenApiRequestDialogProps = OpenApiRequestWorkbenchProps & {\n open: boolean\n onClose: () => void\n}\n\nfunction initialParameterValue(spec: OpenAPISpec, parameter: OpenApiParameter): string {\n if (typeof parameter.example !== 'undefined') return stringifyExample(parameter.example)\n const schema = resolveSchema(spec, parameter.schema)\n if (!isRecord(schema)) return ''\n const value = schema.example ?? schema.default ?? (Array.isArray(schema.enum) ? schema.enum[0] : undefined)\n return stringifyExample(value)\n}\n\nfunction parameterGroupLabel(location: string, t: ReturnType<typeof useBuiltInText>): string {\n if (location === 'path') return t('openapi.pathParameters')\n if (location === 'header') return t('openapi.headers')\n if (location === 'cookie') return t('openapi.cookies')\n return t('openapi.queryParameters')\n}\n\nexport function OpenApiRequestWorkbench(arg0: OpenApiRequestWorkbenchProps): ReactNode {\n const { spec, path, method, operation, operationSource = 'path', requestExample, compact = false, onClose } = arg0\n const t = useBuiltInText()\n const parameters = getOperationParameters(spec, path, operation, operationSource)\n const requestTarget = useOpenApiRequestTarget(spec, path, operation, operationSource, requestExample)\n const { servers, selectedServer, selectedServerKey, serverVariables, setServerVariables, serverVariableEntries, selectServer, authOptions, selectedAuthName, setSelectedAuthName, selectedAuth, credentialScope, credentials, setCredential, clearCredential, requestContents, mediaType, selectedContent, body, setBody, bodyFiles, setBodyFile, applyBodyExample, selectMediaType } = requestTarget\n const requestExamples = getRequestExampleEntries(parameters, selectedContent?.value)\n const [selectedRequestExampleKey, setSelectedRequestExampleKey] = useState(requestExample ?? requestExamples[0]?.key ?? '')\n const currentRequestExampleKey = requestExamples.some((example) => example.key === selectedRequestExampleKey) ? selectedRequestExampleKey : requestExamples[0]?.key ?? ''\n const parameterState = useOpenApiParameterState(spec, parameters, (parameter) => initialParameterValue(spec, parameter), currentRequestExampleKey)\n const { parameterValues, parameterEnabled, parameterIssues, setParameterGroupValues, setParameterIncluded, updateParameterValue, applyParameterExample } = parameterState\n const requestExecution = useOpenApiRequestExecution()\n const { exchange, error, sending, execute } = requestExecution\n const parameterGroups = ['cookie', 'header', 'query'].map((location) => ({\n location,\n parameters: parameters.filter((parameter) => parameter.in === location),\n })).filter((group) => group.parameters.length > 0)\n const pathParameters = parameters.filter((parameter) => parameter.in === 'path')\n const hasRequestConfiguration = authOptions.length > 0 || serverVariableEntries.length > 0 || parameters.length > 0 || requestContents.length > 0\n const showResponse = compact || Boolean(exchange || error)\n\n function applyRequestExample(exampleKey: string) {\n setSelectedRequestExampleKey(exampleKey)\n applyParameterExample(exampleKey)\n applyBodyExample(exampleKey)\n }\n\n function selectRequestMediaType(value: string) {\n const content = requestContents.find((entry) => entry.mediaType === value)?.value\n const nextExampleKey = getRequestExampleEntries(parameters, content)[0]?.key ?? ''\n selectMediaType(value)\n setSelectedRequestExampleKey(nextExampleKey)\n applyParameterExample(nextExampleKey)\n }\n async function sendRequest() {\n const enabledParameters = parameters.filter((parameter) => parameterEnabled[parameterKey(parameter)] !== false)\n const issues = parameterState.validate(enabledParameters)\n if (Object.keys(issues).length > 0) return\n await execute(buildApiRequest({ method, path, server: selectedServer, serverVariables, parameters, parameterValues, parameterEnabled, auth: selectedAuth?.schemes.map((option) => ({ scheme: option.scheme, value: credentials[option.name] ?? '' })), mediaType, body, bodyFiles, baseUrl: window.location.href }), t('openapi.requestCorsHint'))\n }\n\n function renderParameterField(parameter: OpenApiParameter) {\n const key = parameterKey(parameter)\n return (\n <RequestField\n key={key}\n spec={spec}\n parameter={parameter}\n value={parameterValues[key] ?? ''}\n enabled={parameterEnabled[key] !== false}\n issue={parameterIssues[key]}\n onEnabledChange={(enabled) => setParameterIncluded(parameter, enabled)}\n onChange={(value) => updateParameterValue(parameter, value)}\n />\n )\n }\n\n function renderParameterGroup(group: (typeof parameterGroups)[number]) {\n const { location, parameters: grouped } = group\n const actions = location === 'cookie' ? undefined : (\n <>\n <button type=\"button\" title={t('openapi.resetToExample')} aria-label={t('openapi.resetToExample')} onClick={() => setParameterGroupValues(grouped, 'reset')} className=\"grid size-7 place-items-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-ui-text-strong) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)\">\n <RotateCcwIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" title={t('openapi.clear')} aria-label={t('openapi.clear')} onClick={() => setParameterGroupValues(grouped, 'clear')} className=\"grid size-7 place-items-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-ui-text-strong) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)\">\n <EraserIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n </>\n )\n\n return (\n <RequestSection key={location} title={parameterGroupLabel(location, t)} count={grouped.length} defaultOpen actions={actions}>\n {location === 'cookie'\n ? <p className=\"px-3 py-4 text-xs/5 text-(--clarify-ui-text-faint)\">{t('openapi.cookieParametersBrowserManaged')}</p>\n : grouped.map(renderParameterField)}\n </RequestSection>\n )\n }\n\n function renderHeader() {\n return (\n <div className=\"border-b border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface)\">\n <div className=\"grid min-w-0 grid-cols-[auto_auto_minmax(0,1fr)_auto_auto] items-center gap-1.5 px-2.5 py-2 lg:grid-cols-[auto_auto_minmax(0,1fr)_minmax(0,14rem)_auto_auto]\">\n <div className=\"col-start-1 row-start-1\">\n <EndpointMethodBadge method={method.toUpperCase()} />\n </div>\n {servers.length > 0 ? <InlineListbox\n label={t('openapi.server')}\n value={selectedServerKey}\n options={servers.map((server, index) => ({ value: getServerKey(server, index), label: server.url ?? `Server ${index + 1}`, description: server.description }))}\n onChange={selectServer}\n title={selectedServer.url ?? t('openapi.server')}\n buttonContent={<ServerIcon className=\"size-4\" aria-hidden=\"true\" />}\n className=\"col-start-2 row-start-1 size-8 shrink-0\"\n buttonClassName=\"grid size-8 place-items-center rounded-(--clarify-theme-tokens-radius-md) bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text-soft) outline-hidden transition hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-ui-text-strong) focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary) data-open:bg-(--clarify-ui-active-background)\"\n /> : null}\n <span className=\"col-start-3 row-start-1 min-w-0 truncate border-l border-(--clarify-theme-tokens-colors-border) pl-2 font-mono text-xs text-(--clarify-theme-tokens-colors-foreground)\" title={path || '/'}>{path || '/'}</span>\n {requestExamples.length > 1 ? <div className=\"col-span-full row-start-2 flex min-w-0 items-center gap-0.5 border-t border-(--clarify-theme-tokens-colors-border) pt-2 lg:col-span-1 lg:col-start-4 lg:row-start-1 lg:border-t-0 lg:pt-0\">\n <InlineListbox\n label={t('openapi.requestExample')}\n value={currentRequestExampleKey}\n options={requestExamples.map((example) => ({ value: example.key, label: example.title, description: example.summary }))}\n onChange={applyRequestExample}\n className=\"min-w-0 flex-1\"\n buttonClassName=\"flex h-8 w-full min-w-0 max-w-full items-center gap-1 rounded-(--clarify-theme-tokens-radius-md) px-2 text-xs font-medium text-(--clarify-ui-text-strong) outline-hidden transition hover:bg-(--clarify-ui-hover-background) focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)\"\n />\n <button type=\"button\" title={t('openapi.resetToExample')} aria-label={t('openapi.resetToExample')} onClick={() => applyRequestExample(currentRequestExampleKey)} className=\"grid size-8 shrink-0 place-items-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-ui-text-strong) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)\">\n <RotateCcwIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n </div> : null}\n <div className=\"col-start-4 row-start-1 lg:col-start-5\">\n <SendRequestButton label={sending ? t('openapi.sendingRequest') : t('openapi.sendRequest')} busy={sending} text={t('openapi.sendRequest')} onClick={sendRequest} />\n </div>\n {onClose ? <button type=\"button\" onClick={onClose} aria-label={t('openapi.closeRequest')} title={t('openapi.closeRequest')} className=\"col-start-5 row-start-1 grid size-8 shrink-0 place-items-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-soft) transition hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) lg:col-start-6\"><XIcon className=\"size-4\" aria-hidden=\"true\" /></button> : null}\n </div>\n </div>\n )\n }\n\n function renderVariables() {\n if (serverVariableEntries.length === 0) return null\n return (\n <RequestSection title={t('openapi.variables')} count={serverVariableEntries.length} defaultOpen>\n {serverVariableEntries.map(([name, variable]) => (\n <label key={name} className=\"grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,1fr)]\">\n <span className=\"flex min-h-8 items-center border-r border-(--clarify-theme-tokens-colors-border) px-2 font-mono text-xs text-(--clarify-ui-text-strong)\">{name}</span>\n <input value={serverVariables[name] ?? variable.default ?? ''} onChange={(event) => setServerVariables((current) => ({ ...current, [name]: event.target.value }))} className=\"h-8 min-w-0 border-0 bg-transparent px-2 font-mono text-xs text-(--clarify-theme-tokens-colors-foreground) outline-hidden focus:bg-(--clarify-ui-hover-background) focus:ring-0\" />\n </label>\n ))}\n </RequestSection>\n )\n }\n\n function renderRequestBody() {\n if (requestContents.length === 0) return null\n return (\n <RequestSection title={t('openapi.requestBody')} count={1} defaultOpen className=\"open:grid open:min-h-55 open:grow open:shrink open:basis-55 open:grid-rows-[auto_minmax(11rem,1fr)]\" contentClassName={clsx('grid h-full min-h-0', requestContents.length > 1 ? 'grid-rows-[auto_minmax(11rem,1fr)]' : 'grid-rows-[minmax(11rem,1fr)]')}>\n {requestContents.length > 1 ? <div><InlineListbox label={t('openapi.mediaType')} value={mediaType} options={requestContents.map((entry) => ({ value: entry.mediaType, label: entry.mediaType }))} onChange={selectRequestMediaType} /></div> : null}\n <OpenApiRequestBodyEditor spec={spec} mediaType={mediaType} content={selectedContent?.value} body={body} files={bodyFiles} onBodyChange={setBody} onFileChange={setBodyFile} />\n </RequestSection>\n )\n }\n\n return (\n <div className={clsx('clarify-openapi-request flex min-h-0 min-w-0 flex-col not-prose bg-(--clarify-theme-tokens-colors-surface) [--clarify-ui-accent-background:color-mix(in_srgb,var(--clarify-theme-tokens-colors-foreground)_10%,transparent)] [--clarify-ui-accent-border:color-mix(in_srgb,var(--clarify-theme-tokens-colors-foreground)_22%,transparent)] [--clarify-ui-accent-text:var(--clarify-theme-tokens-colors-foreground)] [--clarify-ui-active-background:color-mix(in_srgb,var(--clarify-theme-tokens-colors-foreground)_12%,transparent)] [--clarify-ui-subtle-background:color-mix(in_srgb,var(--clarify-theme-tokens-colors-foreground)_5%,transparent)]', compact ? 'h-full' : 'my-6 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border)')}>\n {renderHeader()}\n\n <div className={clsx('grid min-h-0 flex-1 gap-0 px-0', showResponse && 'lg:grid-cols-[minmax(0,1.12fr)_minmax(22rem,0.88fr)]')}>\n <div className=\"flex min-h-0 min-w-0 flex-col overflow-y-auto\">\n {authOptions.length > 0 ? <RequestSection title={t('openapi.authentication')} count={selectedAuth?.schemes.length ?? 0} defaultOpen>\n <OpenApiAuthPanel authOptions={authOptions} selectedAuthName={selectedAuthName} selectedAuth={selectedAuth} authValues={credentials} onSelectAuth={setSelectedAuthName} onChangeAuthValue={(name, value) => setCredential(credentialScope, name, value)} onClearAuthValue={(name) => clearCredential(credentialScope, name)} />\n </RequestSection> : null}\n\n {renderVariables()}\n\n {pathParameters.length > 0 ? <RequestSection title={t('openapi.pathParameters')} count={pathParameters.length} defaultOpen>\n {pathParameters.map(renderParameterField)}\n </RequestSection> : null}\n\n {parameterGroups.map(renderParameterGroup)}\n\n {renderRequestBody()}\n\n {!hasRequestConfiguration ? <RequestSection title={t('openapi.requestConfiguration')} count={0} defaultOpen>\n <p className=\"px-3 py-5 text-xs/5 text-(--clarify-ui-text-faint)\">{t('openapi.noRequestConfiguration')}</p>\n </RequestSection> : null}\n\n </div>\n\n {showResponse ? <div className=\"h-full min-h-0 min-w-0 overflow-hidden border-t border-(--clarify-theme-tokens-colors-border) lg:border-t-0 lg:border-l\">\n <OpenApiResponseViewer exchange={exchange} error={error} />\n </div> : null}\n </div>\n </div>\n )\n}\n\nexport function OpenApiRequestDialog(arg0: OpenApiRequestDialogProps): ReactNode {\n const { open, onClose, ...workbenchProps } = arg0\n const t = useBuiltInText()\n\n return (\n <Dialog open={open} onClose={() => {}} className=\"relative z-50\">\n <DialogBackdrop className=\"fixed inset-0 bg-(--clarify-ui-overlay-background) backdrop-blur-sm\" />\n <div className=\"fixed inset-0 grid place-items-center overflow-y-auto p-3 sm:p-6\">\n <DialogPanel className=\"relative flex h-[min(46rem,calc(100dvh-1.5rem))] w-full max-w-7xl flex-col overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background) shadow-2xl sm:h-[min(46rem,calc(100dvh-3rem))]\">\n <DialogTitle className=\"sr-only\">{t('openapi.tryRequest')}</DialogTitle>\n <OpenApiRequestWorkbench {...workbenchProps} compact onClose={onClose} />\n </DialogPanel>\n </div>\n </Dialog>\n )\n}\n","import clsx from 'clsx'\nimport { CheckIcon, ChevronDownIcon, CopyIcon, ServerIcon } from 'lucide-react'\nimport { useEffect, useState, type ReactNode } from 'react'\n\nimport { Heading } from '../../components/Heading'\nimport { useBuiltInText } from '../../core/i18n'\nimport { copyTextToClipboard } from '../../utils/clipboard'\nimport { getMediaTypeEntries, getResponseEntries, joinPath } from '../lib/helpers'\nimport { getOpenApiOperationSectionId, type OpenAPIOperation, type OpenAPIOperationSource, type OpenAPISpec } from '../lib/utils'\nimport type { OpenApiServer, OpenApiServerVariable } from '../types'\n\nimport { EndpointMethodBadge } from './EndpointMethodBadge'\nimport { EndpointRequest, EndpointResponse } from './EndpointSections'\nimport { getServerKey, getServerLabel } from './ExamplePanels'\nimport { InlineListbox } from './InlineListbox'\nimport { useOperationAuthState, useOperationRequestState, useOperationServerState } from './OpenApiOperation.state'\nimport { OpenApiRequestDialog } from './OpenApiRequest'\nimport { SendRequestButton } from './SendRequestButton'\nexport type OpenApiOperationProps = {\n spec: OpenAPISpec\n path: string\n method: string\n operation: OpenAPIOperation\n operationSource?: OpenAPIOperationSource\n}\ntype EndpointPathProps = { path: string; copied?: boolean; onCopy?: () => void }\n\nexport function EndpointPath(arg0: EndpointPathProps): ReactNode {\n const { path, copied = false, onCopy } = arg0\n const t = useBuiltInText()\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 overflow-hidden\">\n <div className=\"min-w-0 flex-1 overflow-x-auto text-sm font-bold leading-6 whitespace-nowrap\">\n <span className=\"select-text font-mono text-(--clarify-theme-tokens-colors-foreground)\">{path || '/'}</span>\n </div>\n {onCopy ? (\n <button\n type=\"button\"\n aria-label={copied ? t('actions.copied') : t('actions.copy')}\n title={copied ? t('actions.copied') : t('actions.copy')}\n onClick={onCopy}\n className={clsx(\n 'flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) text-(--clarify-ui-text-soft) transition hover:border-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)',\n copied && 'border-emerald-400/70 bg-emerald-50 text-emerald-700 dark:bg-emerald-400/10 dark:text-emerald-200',\n )}\n >\n {copied ? <CheckIcon className=\"h-3.5 w-3.5\" aria-hidden=\"true\" /> : <CopyIcon className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />}\n </button>\n ) : null}\n </div>\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 getFullEndpointUrl(server: OpenApiServer, variables: Record<string, string>, path: string): string {\n const base = getServerPreviewUrl(server, variables)\n return joinPath(base, path)\n}\n\nfunction getServerProtocolLabel(server: OpenApiServer, variables: Record<string, string>): string | undefined {\n const url = getServerPreviewUrl(server, variables)\n const match = /^([a-z][a-z0-9+.-]*):/i.exec(url)\n const protocol = match?.[1]?.toUpperCase()\n return protocol === 'WS' || protocol === 'WSS' ? protocol : undefined\n}\n\nfunction getDefaultResponseStatus(operation: OpenAPIOperation, spec?: OpenAPISpec): string {\n const responses = getResponseEntries(operation, spec).filter(({ response }) => getMediaTypeEntries(response.content, spec).length > 0)\n const orderedResponses = [...responses].sort((left, right) => {\n if (left.status === 'default') return -1\n if (right.status === 'default') return 1\n\n const leftCode = Number(left.status)\n const rightCode = Number(right.status)\n\n if (!Number.isNaN(leftCode) && !Number.isNaN(rightCode)) return leftCode - rightCode\n return left.status.localeCompare(right.status)\n })\n\n return orderedResponses.find(({ status }) => status === 'default')?.status\n ?? orderedResponses.find(({ status }) => status.startsWith('2'))?.status\n ?? orderedResponses[0]?.status\n ?? ''\n}\n\ntype ServerUrlValueProps = {\n servers: OpenApiServer[]\n selectedKey: string\n server: OpenApiServer\n variables: Record<string, string>\n open: boolean\n interactive: boolean\n directSelect: boolean\n onSelect: (key: string) => void\n onToggle: () => void\n}\n\nfunction ServerUrlValue(arg0: ServerUrlValueProps): ReactNode {\n const { servers, selectedKey, server, variables, open, interactive, directSelect, onSelect, onToggle } = arg0\n\n const url = getServerPreviewUrl(server, variables)\n const protocolLabel = getServerProtocolLabel(server, variables)\n\n if (!interactive) {\n return (\n <span\n aria-label=\"Server\"\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text) sm:w-auto sm:min-w-16 sm:max-w-(--clarify-server-url-max-width) sm:px-1.5\"\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.5 overflow-hidden sm:flex\">\n {protocolLabel ? <span className=\"shrink-0 rounded bg-sky-100 px-1.5 py-0.5 text-2xs font-black text-sky-700 dark:bg-sky-400/15 dark:text-sky-200\">{protocolLabel}</span> : null}\n <span className=\"truncate font-semibold text-xs\">{url}</span>\n </span>\n </span>\n )\n }\n\n if (directSelect) {\n return (\n <InlineListbox\n label=\"Server\"\n value={selectedKey}\n options={servers.map((option, index) => ({\n value: getServerKey(option, index),\n label: getServerLabel(option, index),\n description: option.description,\n }))}\n onChange={onSelect}\n className=\"w-8 shrink-0 sm:w-fit sm:min-w-16 sm:max-w-(--clarify-server-url-max-width)\"\n buttonClassName=\"group flex h-8 w-full min-w-0 cursor-pointer items-center justify-center rounded-lg bg-(--clarify-ui-subtle-background) px-0 text-(--clarify-ui-text) transition-colors hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) data-open:bg-(--clarify-ui-active-background) data-open:text-(--clarify-theme-tokens-colors-foreground) sm:px-1.5\"\n buttonContent={(\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 {protocolLabel ? <span className=\"shrink-0 rounded bg-sky-100 px-1.5 py-0.5 text-2xs font-black text-sky-700 dark:bg-sky-400/15 dark:text-sky-200\">{protocolLabel}</span> : null}\n <span className=\"truncate font-semibold text-xs\">{url}</span>\n <ChevronDownIcon className=\"h-3.5 w-3.5 shrink-0 text-zinc-400 transition-transform group-data-open:rotate-180\" aria-hidden=\"true\" />\n </span>\n </>\n )}\n />\n )\n }\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 cursor-pointer items-center justify-center rounded-lg bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text) transition-colors hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) sm:w-auto sm:min-w-16 sm:max-w-(--clarify-server-url-max-width) sm:px-1.5',\n open ? 'bg-(--clarify-ui-active-background) text-(--clarify-theme-tokens-colors-foreground)' : 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 {protocolLabel ? <span className=\"shrink-0 rounded bg-sky-100 px-1.5 py-0.5 text-2xs font-black text-sky-700 dark:bg-sky-400/15 dark:text-sky-200\">{protocolLabel}</span> : null}\n <span className=\"truncate font-semibold text-xs\">{url}</span>\n <ChevronDownIcon className={clsx('h-3.5 w-3.5 shrink-0 text-zinc-400 transition-transform', open && 'rotate-180')} aria-hidden=\"true\" />\n </span>\n </button>\n )\n}\n\ntype ServerVariableControlProps = {\n name: string\n variable?: OpenApiServerVariable\n value: string\n onChange: (value: string) => void\n compact?: boolean\n}\n\nfunction ServerVariableControl(arg0: ServerVariableControlProps): ReactNode {\n 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 buttonClassName=\"inline-flex min-h-8 w-full min-w-0 items-center justify-between gap-1 rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-2.5 py-1.5 text-xs font-semibold text-(--clarify-theme-tokens-colors-foreground) shadow-xs outline-hidden transition hover:border-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) focus:ring-2 focus:ring-inset focus:ring-(--clarify-theme-tokens-colors-primary) data-open:bg-(--clarify-ui-active-background)\"\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-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) text-xs font-semibold text-(--clarify-theme-tokens-colors-foreground) shadow-xs outline-hidden transition placeholder:text-(--clarify-ui-text-faint) hover:border-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) focus:border-(--clarify-theme-tokens-colors-primary) focus:bg-(--clarify-theme-tokens-colors-surface)',\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\ntype ServerPanelProps = {\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}\n\nfunction ServerPanel(arg0: ServerPanelProps): ReactNode {\n 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-(--clarify-theme-tokens-colors-border) bg-(--clarify-ui-subtle-background) p-3\">\n <div className=\"flex flex-col gap-3\">\n {servers.length > 1 ? (\n <label className=\"flex min-w-0 flex-col gap-1.5\">\n <span className=\"text-2xs font-semibold text-(--clarify-ui-text-soft)\">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 buttonClassName=\"inline-flex min-h-8 w-full min-w-0 items-center justify-between gap-1 rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-2.5 py-1.5 text-xs font-semibold text-(--clarify-theme-tokens-colors-foreground) shadow-xs outline-hidden transition hover:border-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) focus:ring-2 focus:ring-inset focus:ring-(--clarify-theme-tokens-colors-primary) data-open:bg-(--clarify-ui-active-background)\"\n />\n </label>\n ) : null}\n {variableEntries.length > 0 ? (\n <div className=\"grid gap-3 sm:grid-cols-(--clarify-openapi-variable-grid)\">\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-(--clarify-ui-text-soft)\">{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 ) : null}\n </div>\n </div>\n )\n}\n\ntype EndpointIdentityProps = {\n method: string\n operationSource: OpenAPIOperationSource\n path: string\n servers: OpenApiServer[]\n selectedServerKey: string\n selectedServer: OpenApiServer\n serverVariables: Record<string, string>\n serverOpen: boolean\n onSelectServer: (key: string) => void\n onChangeServerVariable: (name: string, value: string) => void\n onToggleServer: () => void\n onTryRequest?: () => void\n}\n\nexport function EndpointIdentity(arg0: EndpointIdentityProps): ReactNode {\n const {\n method,\n operationSource,\n path,\n servers,\n selectedServerKey,\n selectedServer,\n serverVariables,\n serverOpen,\n onSelectServer,\n onChangeServerVariable,\n onToggleServer,\n onTryRequest,\n } = arg0\n const t = useBuiltInText()\n\n const directServerSelect = servers.length > 1 && servers.every((server) => Object.keys(server.variables ?? {}).length === 0)\n const serverInteractive = servers.length > 1 || Object.keys(selectedServer.variables ?? {}).length > 0\n const [copiedUrl, setCopiedUrl] = useState(false)\n const fullUrl = getFullEndpointUrl(selectedServer, serverVariables, path)\n\n useEffect(() => {\n if (!copiedUrl) return undefined\n\n const timeout = setTimeout(() => setCopiedUrl(false), 1200)\n return () => clearTimeout(timeout)\n }, [copiedUrl])\n\n async function handleCopyUrl() {\n if (await copyTextToClipboard(fullUrl)) {\n setCopiedUrl(true)\n }\n }\n\n return (\n <div className=\"clarify-openai-endpoint-identity not-prose flex w-full flex-col overflow-hidden rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-xs\">\n <div className=\"flex min-w-0 items-center gap-1.5 overflow-hidden px-2.5 py-2\">\n <EndpointMethodBadge method={method} />\n {operationSource === 'webhook' ? <EndpointMethodBadge method=\"WEBHOOK\" /> : null}\n <ServerUrlValue\n servers={servers}\n selectedKey={selectedServerKey}\n server={selectedServer}\n variables={serverVariables}\n open={serverOpen}\n interactive={serverInteractive}\n directSelect={directServerSelect}\n onSelect={onSelectServer}\n onToggle={onToggleServer}\n />\n <EndpointPath path={path} copied={copiedUrl} onCopy={handleCopyUrl} />\n {onTryRequest ? (\n <SendRequestButton label={t('openapi.tryRequest')} onClick={onTryRequest} />\n ) : null}\n </div>\n {serverInteractive && !directServerSelect && 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 </div>\n )\n}\n\nexport function OpenApiOperation(arg0: OpenApiOperationProps): ReactNode {\n const { spec, path, method, operation, operationSource = 'path' } = arg0\n\n const id = getOpenApiOperationSectionId(operation)\n const summary = operation.summary ?? `${method} ${path}`\n const description = operation.description\n const requestState = useOperationRequestState(spec, path, operation, operationSource)\n const serverState = useOperationServerState(spec, operation, path, operationSource)\n const authState = useOperationAuthState(spec, operation)\n const [linkedExampleKey, setLinkedExampleKey] = useState('')\n const [selectedResponseStatus, setSelectedResponseStatus] = useState(() => getDefaultResponseStatus(operation, spec))\n const [requestOpen, setRequestOpen] = useState(false)\n\n return (\n <section className=\"clarify-openai-endpoint scroll-mt-24 pb-16 first:pt-0 last:pb-0\" aria-labelledby={id}>\n <Heading id={id}>\n {summary}\n </Heading>\n <EndpointIdentity\n method={method}\n operationSource={operationSource}\n path={path}\n servers={serverState.servers}\n selectedServerKey={serverState.selectedServerKey}\n selectedServer={serverState.selectedServer}\n serverVariables={serverState.serverVariables}\n serverOpen={serverState.serverOpen}\n onSelectServer={serverState.onSelectServer}\n onChangeServerVariable={serverState.onChangeServerVariable}\n onToggleServer={serverState.onToggleServer}\n onTryRequest={() => setRequestOpen(true)}\n />\n <OpenApiRequestDialog open={requestOpen} onClose={() => setRequestOpen(false)} spec={spec} path={path} method={method} operation={operation} operationSource={operationSource} />\n <EndpointRequest\n spec={spec}\n path={path}\n method={method}\n operationSource={operationSource}\n description={description}\n groupedParameters={requestState.groupedParameters}\n parameters={requestState.parameters}\n requestBody={requestState.requestBody}\n requestContents={requestState.requestContents}\n requestSchema={requestState.requestSchema}\n selectedRequestMediaType={requestState.selectedRequestMediaType}\n onSelectRequestMediaType={requestState.setSelectedRequestMediaType}\n selectedServer={serverState.selectedServer}\n serverVariables={serverState.serverVariables}\n authOptions={authState.authOptions}\n auth={authState.authInput}\n sharedExampleKey={linkedExampleKey}\n onSelectExampleKey={setLinkedExampleKey}\n />\n <EndpointResponse\n spec={spec}\n operation={operation}\n operationSource={operationSource}\n sharedExampleKey={linkedExampleKey}\n onSelectExampleKey={setLinkedExampleKey}\n selectedStatus={selectedResponseStatus}\n onSelectStatus={setSelectedResponseStatus}\n />\n </section>\n )\n}\n"],"mappings":"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"}