@apiboost/omnispec 1.1.0-next.3 → 1.1.0-next.5
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.
- package/dist/cjs/asyncapi/index.js +2 -2
- package/dist/cjs/chunks/{AsyncApiSpec-BzgUioEK.js → AsyncApiSpec-B-RGmOUL.js} +345 -122
- package/dist/cjs/chunks/AsyncApiSpec-B-RGmOUL.js.map +1 -0
- package/dist/cjs/chunks/{Collapsible-BTWyDBkX.js → Collapsible-qjYtxwP0.js} +17 -6
- package/dist/cjs/chunks/Collapsible-qjYtxwP0.js.map +1 -0
- package/dist/cjs/chunks/{OmniSpecRenderer-CRipDRtC.js → OmniSpecRenderer-Bh-IQod3.js} +3 -3
- package/dist/cjs/chunks/{OmniSpecRenderer-CRipDRtC.js.map → OmniSpecRenderer-Bh-IQod3.js.map} +1 -1
- package/dist/cjs/chunks/{OpenApiSpec-BOlesoUX.js → OpenApiSpec-5V9E-wQH.js} +3 -3
- package/dist/cjs/chunks/{OpenApiSpec-BOlesoUX.js.map → OpenApiSpec-5V9E-wQH.js.map} +1 -1
- package/dist/cjs/chunks/{OpenIdConnectManual-Bh7tdxoH.js → OpenIdConnectManual-DXDG8bcp.js} +2 -2
- package/dist/cjs/chunks/{OpenIdConnectManual-Bh7tdxoH.js.map → OpenIdConnectManual-DXDG8bcp.js.map} +1 -1
- package/dist/cjs/core/public.js +2 -2
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/openapi/index.js +3 -3
- package/dist/cjs/wc/index.js +1 -1
- package/dist/esm/asyncapi/index.js +2 -2
- package/dist/esm/chunks/{AsyncApiSpec-B757IIHz.js → AsyncApiSpec-C0tdvyEP.js} +345 -122
- package/dist/esm/chunks/AsyncApiSpec-C0tdvyEP.js.map +1 -0
- package/dist/esm/chunks/{Collapsible-MyJB2agz.js → Collapsible-CPxS90KX.js} +17 -6
- package/dist/esm/chunks/Collapsible-CPxS90KX.js.map +1 -0
- package/dist/esm/chunks/{OmniSpecRenderer-5RUZx-C7.js → OmniSpecRenderer-DmXZtPRr.js} +3 -3
- package/dist/esm/chunks/{OmniSpecRenderer-5RUZx-C7.js.map → OmniSpecRenderer-DmXZtPRr.js.map} +1 -1
- package/dist/esm/chunks/{OpenApiSpec-wm3tH2vF.js → OpenApiSpec-CoPhPro1.js} +3 -3
- package/dist/esm/chunks/{OpenApiSpec-wm3tH2vF.js.map → OpenApiSpec-CoPhPro1.js.map} +1 -1
- package/dist/esm/chunks/{OpenIdConnectManual-DPmTIIIy.js → OpenIdConnectManual-DhrAcSCa.js} +2 -2
- package/dist/esm/chunks/{OpenIdConnectManual-DPmTIIIy.js.map → OpenIdConnectManual-DhrAcSCa.js.map} +1 -1
- package/dist/esm/core/public.js +2 -2
- package/dist/esm/index.js +5 -5
- package/dist/esm/openapi/index.js +3 -3
- package/dist/esm/wc/index.js +1 -1
- package/dist/types/asyncapi/AsyncApiSpec.d.ts.map +1 -1
- package/dist/types/asyncapi/components/AsyncOverview.d.ts.map +1 -1
- package/dist/types/asyncapi/components/BindingsSection.d.ts.map +1 -1
- package/dist/types/asyncapi/components/ChannelDetail.d.ts.map +1 -1
- package/dist/types/asyncapi/components/ComponentsSection.d.ts.map +1 -1
- package/dist/types/asyncapi/components/ExternalDocsLink.d.ts.map +1 -1
- package/dist/types/asyncapi/components/ExternalLink.d.ts +31 -0
- package/dist/types/asyncapi/components/ExternalLink.d.ts.map +1 -0
- package/dist/types/asyncapi/components/MessagePayload.d.ts.map +1 -1
- package/dist/types/asyncapi/components/SecurityRequirementBadges.d.ts.map +1 -1
- package/dist/types/asyncapi/components/TagChips.d.ts +27 -0
- package/dist/types/asyncapi/components/TagChips.d.ts.map +1 -0
- package/dist/types/asyncapi/components/field-display.d.ts +11 -3
- package/dist/types/asyncapi/components/field-display.d.ts.map +1 -1
- package/dist/types/asyncapi/parser/asyncapi-parser.d.ts.map +1 -1
- package/dist/types/asyncapi/tag-grouping.d.ts +9 -5
- package/dist/types/asyncapi/tag-grouping.d.ts.map +1 -1
- package/dist/types/asyncapi/types/asyncapi.types.d.ts +25 -12
- package/dist/types/asyncapi/types/asyncapi.types.d.ts.map +1 -1
- package/dist/types/core/components/Navigation/SearchBar.d.ts +7 -1
- package/dist/types/core/components/Navigation/SearchBar.d.ts.map +1 -1
- package/dist/types/core/components/SchemaViewer/schema-utils.d.ts.map +1 -1
- package/dist/wc/standalone.js +1 -1
- package/dist/wc/standalone.js.map +1 -1
- package/package.json +12 -2
- package/dist/cjs/chunks/AsyncApiSpec-BzgUioEK.js.map +0 -1
- package/dist/cjs/chunks/Collapsible-BTWyDBkX.js.map +0 -1
- package/dist/esm/chunks/AsyncApiSpec-B757IIHz.js.map +0 -1
- package/dist/esm/chunks/Collapsible-MyJB2agz.js.map +0 -1
package/dist/esm/chunks/{OpenIdConnectManual-DPmTIIIy.js.map → OpenIdConnectManual-DhrAcSCa.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenIdConnectManual-DPmTIIIy.js","sources":["../../../src/core/context/AuthContext.tsx","../../../src/core/components/Reference/ReferenceOperationDetail.tsx","../../../src/core/components/TryIt/curl-generator.ts","../../../src/core/components/TryIt/code-generators.ts","../../../src/core/components/Reference/SamplesPanel.tsx","../../../src/core/components/common/LinkableHeading.tsx","../../../src/core/components/common/Modal.tsx","../../../src/core/utils/tryit-storage.ts","../../../src/core/components/common/ResponsiveColumns.tsx","../../../src/core/utils/proxy-client.ts","../../../src/core/utils/direct-client.ts","../../../src/core/components/TryIt/CodeSamples.tsx","../../../src/core/components/TryIt/ResponseViewer.tsx","../../../src/core/components/Auth/SecretInput.tsx","../../../src/core/components/Auth/ApiKeyAuth.tsx","../../../src/core/components/Auth/OAuth2AuthManual.tsx","../../../src/core/components/Auth/OpenIdConnectManual.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport type { AppliedAuthValue, AuthScheme } from '../types/auth.types'\nimport { useConfig } from './ConfigContext'\n\n/**\n * Applied credentials persist to localStorage — but only when the integrator\n * opts in with a positive `tryItPersistTtl` (seconds). The stored envelope\n * carries a savedAt timestamp so entries expire once older than the TTL. When\n * no positive TTL is configured (undefined or 0) nothing is persisted:\n * credentials live in memory for the current page only, and any previously\n * stored entry is cleared. Entries are namespaced per spec so credentials never\n * bleed across different API docs sharing an origin.\n */\nconst AUTH_KEY_PREFIX = 'omnispec:auth'\n\ninterface AuthEnvelope {\n savedAt: number\n values: AppliedAuthValue[]\n}\n\nfunction getStorage(): Storage | null {\n try {\n if (typeof window === 'undefined' || !window.localStorage) return null\n if (typeof window.localStorage.setItem !== 'function' || typeof window.localStorage.getItem !== 'function') {\n return null\n }\n return window.localStorage\n } catch {\n return null\n }\n}\n\n/** Persistence is opt-in: only a finite, positive TTL enables it. */\nfunction persistEnabled(ttlSeconds?: number): boolean {\n return typeof ttlSeconds === 'number' && Number.isFinite(ttlSeconds) && ttlSeconds > 0\n}\n\nfunction authStorageKey(specKey: string): string {\n return `${AUTH_KEY_PREFIX}:${specKey}`\n}\n\nfunction loadPersistedAuth(specKey: string | undefined, ttlSeconds?: number): Map<string, AppliedAuthValue> {\n if (!specKey || !persistEnabled(ttlSeconds)) return new Map()\n const storage = getStorage()\n if (!storage) return new Map()\n const key = authStorageKey(specKey)\n try {\n const raw = storage.getItem(key)\n if (!raw) return new Map()\n const parsed = JSON.parse(raw) as AuthEnvelope\n if (!parsed || typeof parsed.savedAt !== 'number' || !Array.isArray(parsed.values)) {\n storage.removeItem(key)\n return new Map()\n }\n if (Date.now() - parsed.savedAt > (ttlSeconds as number) * 1000) {\n storage.removeItem(key)\n return new Map()\n }\n return new Map(parsed.values.filter((v) => v && v.schemeId).map((v) => [v.schemeId, v]))\n } catch {\n return new Map()\n }\n}\n\nfunction persistAuth(auth: Map<string, AppliedAuthValue>, specKey: string | undefined, ttlSeconds?: number): void {\n if (!specKey) return\n const storage = getStorage()\n if (!storage) return\n const key = authStorageKey(specKey)\n try {\n // When persistence is disabled (or nothing is applied) clear any stale\n // entry so a previously-persisted credential can't linger.\n if (!persistEnabled(ttlSeconds) || auth.size === 0) {\n storage.removeItem(key)\n return\n }\n const envelope: AuthEnvelope = { savedAt: Date.now(), values: Array.from(auth.values()) }\n storage.setItem(key, JSON.stringify(envelope))\n } catch {\n // Best-effort — storage may be disabled or over quota.\n }\n}\n\ninterface AuthContextValue {\n appliedAuth: Map<string, AppliedAuthValue>\n applyAuth: (value: AppliedAuthValue) => void\n removeAuth: (schemeId: string) => void\n clearAuth: () => void\n getAuthHeaders: () => Record<string, string>\n /** Security schemes available to the Authorize panel. */\n schemes: AuthScheme[]\n /** Whether any security schemes exist (drives the Authorize button). */\n hasAuth: boolean\n /** Whether the Authorize panel modal is open. */\n authPanelOpen: boolean\n openAuthPanel: () => void\n closeAuthPanel: () => void\n}\n\nconst AuthContext = createContext<AuthContextValue>({\n appliedAuth: new Map(),\n applyAuth: () => {},\n removeAuth: () => {},\n clearAuth: () => {},\n getAuthHeaders: () => ({}),\n schemes: [],\n hasAuth: false,\n authPanelOpen: false,\n openAuthPanel: () => {},\n closeAuthPanel: () => {},\n})\n\nexport function useAuth() {\n return useContext(AuthContext)\n}\n\ninterface AuthProviderProps {\n children: ReactNode\n /** Security schemes surfaced by the Authorize panel. */\n schemes?: AuthScheme[]\n}\n\nexport function AuthProvider({ children, schemes = [] }: AuthProviderProps) {\n const { specKey, tryItPersistTtl } = useConfig()\n const [appliedAuth, setAppliedAuth] = useState<Map<string, AppliedAuthValue>>(\n () => loadPersistedAuth(specKey, tryItPersistTtl),\n )\n const [authPanelOpen, setAuthPanelOpen] = useState(false)\n\n useEffect(() => {\n persistAuth(appliedAuth, specKey, tryItPersistTtl)\n }, [appliedAuth, specKey, tryItPersistTtl])\n\n const applyAuth = useCallback((value: AppliedAuthValue) => {\n setAppliedAuth((prev) => {\n const next = new Map(prev)\n next.set(value.schemeId, value)\n return next\n })\n }, [])\n\n const removeAuth = useCallback((schemeId: string) => {\n setAppliedAuth((prev) => {\n const next = new Map(prev)\n next.delete(schemeId)\n return next\n })\n }, [])\n\n const clearAuth = useCallback(() => {\n setAppliedAuth(new Map())\n }, [])\n\n const getAuthHeaders = useCallback((): Record<string, string> => {\n const headers: Record<string, string> = {}\n for (const auth of appliedAuth.values()) {\n headers[auth.headerName] = auth.headerValue\n }\n return headers\n }, [appliedAuth])\n\n const openAuthPanel = useCallback(() => setAuthPanelOpen(true), [])\n const closeAuthPanel = useCallback(() => setAuthPanelOpen(false), [])\n\n const value = useMemo<AuthContextValue>(() => ({\n appliedAuth,\n applyAuth,\n removeAuth,\n clearAuth,\n getAuthHeaders,\n schemes,\n hasAuth: schemes.length > 0,\n authPanelOpen,\n openAuthPanel,\n closeAuthPanel,\n }), [appliedAuth, applyAuth, removeAuth, clearAuth, getAuthHeaders, schemes, authPanelOpen, openAuthPanel, closeAuthPanel])\n\n return (\n <AuthContext.Provider value={value}>\n {children}\n </AuthContext.Provider>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useEffect, useState } from 'react'\nimport { css, cx } from '../../styles/css'\nimport { useExpandAll } from '@core/context/ExpandContext'\nimport { SchemaTree } from '../SchemaViewer/SchemaTree'\nimport { schemaToNodes } from '../SchemaViewer/schema-utils'\nimport { MarkdownRenderer } from '../MarkdownRenderer/MarkdownRenderer'\nimport { Icon } from '../common/Icon'\nimport type { SchemaNode } from '../SchemaViewer/schema-utils'\n\ninterface Parameter {\n name: string\n in: string\n required: boolean\n description?: string\n schema?: Record<string, unknown>\n example?: unknown\n}\n\ninterface RequestBody {\n description?: string\n required?: boolean\n content: Record<string, { schema?: Record<string, unknown> }>\n}\n\ninterface Response {\n statusCode: string\n description: string\n content?: Record<string, { schema?: Record<string, unknown> }>\n}\n\nexport interface ReferenceOperationDetailProps {\n operationId: string\n description?: string\n parameters: Parameter[]\n requestBody?: RequestBody\n responses: Response[]\n security?: string[][]\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction buildParamSchemaNodes(parameters: Parameter[]): SchemaNode[] {\n return parameters.map((p) => ({\n name: p.name,\n type: (p.schema?.type as string) ?? 'any',\n format: p.schema?.format as string | undefined,\n description: p.description,\n required: p.required,\n enum: p.schema?.enum as unknown[] | undefined,\n default: p.schema?.default,\n constraints: [] as string[],\n }))\n}\n\nfunction getStatusColor(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'var(--omnispec-color-success)'\n if (num >= 400 && num < 500) return 'var(--omnispec-color-warning)'\n if (num >= 500) return 'var(--omnispec-color-error)'\n return 'var(--omnispec-fg-primary)'\n}\n\nfunction getStatusBg(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'rgba(26, 127, 55, 0.08)'\n if (num >= 400 && num < 500) return 'rgba(191, 135, 0, 0.08)'\n if (num >= 500) return 'rgba(207, 34, 46, 0.08)'\n return 'var(--omnispec-bg-tertiary)'\n}\n\n// ---------------------------------------------------------------------------\n// ResponseCard — expandable per-response section\n// ---------------------------------------------------------------------------\n\ninterface ResponseCardProps {\n response: Response\n}\n\nfunction ResponseCard({ response }: ResponseCardProps) {\n const [expanded, setExpanded] = useState(false)\n\n // Mirror the document-wide \"expand all\" toggle (generation-gated so the\n // initial mount stays collapsed).\n const { expandAll, expandGeneration } = useExpandAll()\n useEffect(() => {\n if (expandGeneration > 0) {\n setExpanded(!!expandAll)\n }\n }, [expandAll, expandGeneration])\n\n const statusColor = getStatusColor(response.statusCode)\n const statusBg = getStatusBg(response.statusCode)\n\n const hasContent = response.content && Object.keys(response.content).length > 0\n\n // The status pill + description are shared between the expandable (has schema)\n // and static (no schema) presentations.\n const header = (\n <>\n <span\n className={cx(\n statusPillStyle,\n css({ color: statusColor, backgroundColor: 'transparent' }),\n )}\n >\n {response.statusCode}\n </span>\n <span className={responseDescStyle}>{response.description}</span>\n </>\n )\n\n return (\n <div\n className={cx(\n responseCardStyle,\n css({\n borderLeft: `0.1875rem solid ${statusColor}`,\n backgroundColor: statusBg,\n }),\n )}\n >\n {hasContent ? (\n <button\n type=\"button\"\n className={responseCardHeaderStyle}\n onClick={() => setExpanded((prev) => !prev)}\n aria-expanded={expanded}\n >\n <span\n className={cx(\n chevronStyle,\n css({ transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)' }),\n )}\n >\n <Icon name=\"chevron-right\" size=\"0.875rem\" />\n </span>\n {header}\n </button>\n ) : (\n // No response schema — render a static, non-interactive row. The left\n // inset keeps the status pill aligned with the expandable rows' pills.\n <div className={responseCardStaticHeaderStyle}>{header}</div>\n )}\n\n {expanded && hasContent && (\n <div className={responseBodyStyle}>\n {Object.entries(response.content!).map(([contentType, media]) => (\n <div key={contentType}>\n <div className={schemaHeaderRowStyle}>\n <span className={sectionLabelStyle}>Response Schema</span>\n <code className={contentTypeBadgeStyle}>{contentType}</code>\n </div>\n {media.schema && (\n <SchemaTree nodes={schemaToNodes(media.schema)} context=\"response\" />\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ParamSection — renders a group of parameters through the configurable SchemaTree\n// ---------------------------------------------------------------------------\n\ninterface ParamSectionProps {\n title: string\n params: Parameter[]\n}\n\nfunction ParamSection({ title, params }: ParamSectionProps) {\n if (params.length === 0) return null\n const nodes = buildParamSchemaNodes(params)\n\n return (\n <div className={sectionStyle}>\n <h4 className={sectionTitleStyle}>{title}</h4>\n <SchemaTree nodes={nodes} />\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\nexport function ReferenceOperationDetail({\n description,\n parameters,\n requestBody,\n responses,\n security,\n}: ReferenceOperationDetailProps) {\n const pathParams = parameters.filter((p) => p.in === 'path')\n const queryParams = parameters.filter((p) => p.in === 'query')\n const headerParams = parameters.filter((p) => p.in === 'header')\n\n return (\n <div className={containerStyle}>\n {/* Description */}\n {description && (\n <div className={sectionStyle}>\n <MarkdownRenderer content={description} />\n </div>\n )}\n\n {/* Security */}\n {security && security.length > 0 && (\n <div className={sectionStyle}>\n <h4 className={sectionTitleStyle}>Security</h4>\n <div className={securityListStyle}>\n {security.map((schemes, idx) => (\n <div key={idx} className={securityRowStyle}>\n {schemes.map((scheme) => (\n <span key={scheme} className={securityBadgeStyle}>\n <Icon name=\"lock\" size=\"0.625rem\" strokeWidth={2.5} />\n {scheme}\n </span>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Path Parameters */}\n <ParamSection title=\"Path Parameters\" params={pathParams} />\n\n {/* Query Parameters */}\n <ParamSection title=\"Query Parameters\" params={queryParams} />\n\n {/* Header Parameters */}\n <ParamSection title=\"Header Parameters\" params={headerParams} />\n\n {/* Request Body */}\n {requestBody && (\n <div className={sectionStyle}>\n <div className={schemaHeaderRowStyle}>\n <h4 className={sectionTitleStyle}>Request Body</h4>\n {requestBody.required && (\n <span className={requiredTagStyle}>Required</span>\n )}\n </div>\n {Object.entries(requestBody.content).map(([contentType, media]) => (\n <div key={contentType}>\n <code className={contentTypeBadgeStyle}>{contentType}</code>\n {media.schema && (\n <SchemaTree nodes={schemaToNodes(media.schema)} context=\"request\" />\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Responses */}\n {responses.length > 0 && (\n <div className={sectionStyle}>\n <div className={responsesHeaderRowStyle}>\n <h4 className={sectionTitleStyle}>Responses</h4>\n <div className={statusPillsRowStyle}>\n {responses.map((r) => (\n <span\n key={r.statusCode}\n className={cx(\n statusPillStyle,\n css({\n color: getStatusColor(r.statusCode),\n backgroundColor: getStatusBg(r.statusCode),\n }),\n )}\n >\n {r.statusCode}\n </span>\n ))}\n </div>\n </div>\n <div className={responseListStyle}>\n {responses.map((r) => (\n <ResponseCard key={r.statusCode} response={r} />\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst containerStyle = css({\n display: 'flex',\n flexDirection: 'column',\n})\n\nconst sectionStyle = css({\n marginBottom: '1.5rem',\n})\n\nconst sectionTitleStyle = css({\n margin: '0 0 0.75rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst sectionLabelStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst securityListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.375rem',\n})\n\nconst securityRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n flexWrap: 'wrap',\n})\n\nconst securityBadgeStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.3125rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.1875rem 0.625rem',\n borderRadius: '0.25rem',\n fontWeight: 500,\n})\n\nconst schemaHeaderRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n marginBottom: '0.5rem',\n flexWrap: 'wrap',\n})\n\nconst contentTypeBadgeStyle = css({\n display: 'inline-block',\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n})\n\nconst requiredTagStyle = css({\n fontSize: 'var(--omnispec-font-size-xxs)',\n fontWeight: 600,\n color: 'var(--omnispec-color-error)',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n})\n\nconst responsesHeaderRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n marginBottom: '0.75rem',\n flexWrap: 'wrap',\n})\n\nconst statusPillsRowStyle = css({\n display: 'flex',\n gap: '0.375rem',\n flexWrap: 'wrap',\n})\n\nconst statusPillStyle = css({\n display: 'inline-block',\n fontFamily: 'var(--omnispec-font-mono)',\n fontWeight: 700,\n fontSize: 'var(--omnispec-font-size-xs)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n})\n\nconst responseListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n})\n\nconst responseCardStyle = css({\n borderRadius: 'var(--omnispec-border-radius)',\n overflow: 'hidden',\n})\n\nconst responseCardHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 0.75rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n textAlign: 'left',\n color: 'inherit',\n})\n\n// Static (non-expandable) response row. The extra left inset (chevron width +\n// gap) keeps its status pill aligned with the expandable rows above/below it.\nconst responseCardStaticHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 0.75rem 0.625rem 2.125rem',\n color: 'inherit',\n})\n\nconst chevronStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n transition: 'transform 0.15s ease',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst responseDescStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n flex: 1,\n})\n\nconst responseBodyStyle = css({\n padding: '0 0.75rem 0.75rem',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { TryItRequest } from '../../types/try-it.types'\n\nexport function generateCurl(request: TryItRequest, serverUrl: string): string {\n const parts: string[] = ['curl']\n\n // Method\n if (request.method.toUpperCase() !== 'GET') {\n parts.push(`-X ${request.method.toUpperCase()}`)\n }\n\n // Build URL\n let url = serverUrl + request.url\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n\n // Query params\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) params.append(key, v)\n } else {\n params.set(key, value)\n }\n }\n url += `?${params.toString()}`\n }\n\n parts.push(`'${url}'`)\n\n // Headers\n for (const [key, value] of Object.entries(request.headers)) {\n parts.push(`-H '${key}: ${value}'`)\n }\n\n // Multipart body — one -F per form part (curl sets the boundary itself).\n if (request.body && typeof request.body !== 'string') {\n request.body.forEach((value, key) => {\n if (typeof value === 'string') {\n parts.push(`-F '${key}=${value.replace(/'/g, \"'\\\\''\")}'`)\n } else {\n // File part — reference the local file with @.\n parts.push(`-F '${key}=@${value.name || 'file'}'`)\n }\n })\n return parts.join(' \\\\\\n ')\n }\n\n // Body\n if (request.body && typeof request.body === 'string') {\n if (request.bodyType === 'application/x-www-form-urlencoded') {\n try {\n const parsed = JSON.parse(request.body)\n for (const [key, value] of Object.entries(parsed)) {\n parts.push(`--data-urlencode '${key}=${String(value)}'`)\n }\n } catch {\n const escaped = request.body.replace(/'/g, \"'\\\\''\")\n parts.push(`-d '${escaped}'`)\n }\n } else {\n const escaped = request.body.replace(/'/g, \"'\\\\''\")\n parts.push(`-d '${escaped}'`)\n }\n }\n\n return parts.join(' \\\\\\n ')\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { TryItRequest } from '@core/types/try-it.types'\n\nfunction buildUrl(request: TryItRequest, serverUrl: string): string {\n let url = serverUrl + request.url\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) params.append(key, v)\n } else {\n params.set(key, value)\n }\n }\n url += `?${params.toString()}`\n }\n return url\n}\n\nexport function generateJavaScript(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push(`const response = await fetch('${url}', {`)\n lines.push(` method: '${method}',`)\n\n if (headers.length > 0) {\n lines.push(' headers: {')\n for (const [key, value] of headers) {\n lines.push(` '${key}': '${value}',`)\n }\n lines.push(' },')\n }\n\n if (hasBody) {\n lines.push(` body: JSON.stringify(${request.body}),`)\n }\n\n lines.push('})')\n lines.push('')\n lines.push('const data = await response.json()')\n lines.push('console.log(data)')\n\n return lines.join('\\n')\n}\n\nexport function generatePython(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toLowerCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push('import requests')\n lines.push('')\n\n if (headers.length > 0) {\n lines.push('headers = {')\n for (const [key, value] of headers) {\n lines.push(` '${key}': '${value}',`)\n }\n lines.push('}')\n lines.push('')\n }\n\n if (hasBody) {\n lines.push(`payload = ${request.body}`)\n lines.push('')\n }\n\n const args: string[] = [`'${url}'`]\n if (headers.length > 0) args.push('headers=headers')\n if (hasBody) args.push('json=payload')\n\n lines.push(`response = requests.${method}(${args.join(', ')})`)\n lines.push('print(response.json())')\n\n return lines.join('\\n')\n}\n\nexport function generateGo(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push('package main')\n lines.push('')\n lines.push('import (')\n lines.push('\\t\"fmt\"')\n lines.push('\\t\"io\"')\n lines.push('\\t\"net/http\"')\n if (hasBody) lines.push('\\t\"strings\"')\n lines.push(')')\n lines.push('')\n lines.push('func main() {')\n\n if (hasBody) {\n lines.push(`\\tbody := strings.NewReader(\\`${request.body}\\`)`)\n lines.push(`\\treq, err := http.NewRequest(\"${method}\", \"${url}\", body)`)\n } else {\n lines.push(`\\treq, err := http.NewRequest(\"${method}\", \"${url}\", nil)`)\n }\n lines.push('\\tif err != nil {')\n lines.push('\\t\\tpanic(err)')\n lines.push('\\t}')\n\n for (const [key, value] of headers) {\n lines.push(`\\treq.Header.Set(\"${key}\", \"${value}\")`)\n }\n\n lines.push('')\n lines.push('\\tresp, err := http.DefaultClient.Do(req)')\n lines.push('\\tif err != nil {')\n lines.push('\\t\\tpanic(err)')\n lines.push('\\t}')\n lines.push('\\tdefer resp.Body.Close()')\n lines.push('')\n lines.push('\\tresBody, _ := io.ReadAll(resp.Body)')\n lines.push('\\tfmt.Println(string(resBody))')\n lines.push('}')\n\n return lines.join('\\n')\n}\n\nexport function generateJava(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push('import java.net.URI;')\n lines.push('import java.net.http.HttpClient;')\n lines.push('import java.net.http.HttpRequest;')\n lines.push('import java.net.http.HttpResponse;')\n lines.push('')\n lines.push('HttpClient client = HttpClient.newHttpClient();')\n\n if (hasBody) {\n lines.push('')\n lines.push('String body = \"\"\"')\n lines.push(` ${request.body}\"\"\";`)\n }\n\n lines.push('')\n lines.push('HttpRequest request = HttpRequest.newBuilder()')\n lines.push(` .uri(URI.create(\"${url}\"))`)\n\n if (hasBody) {\n lines.push(` .method(\"${method}\", HttpRequest.BodyPublishers.ofString(body))`)\n } else if (method !== 'GET') {\n lines.push(` .method(\"${method}\", HttpRequest.BodyPublishers.noBody())`)\n }\n\n for (const [key, value] of headers) {\n lines.push(` .header(\"${key}\", \"${value}\")`)\n }\n\n lines.push(' .build();')\n lines.push('')\n lines.push('HttpResponse<String> response = client.send(')\n lines.push(' request, HttpResponse.BodyHandlers.ofString());')\n lines.push('System.out.println(response.body());')\n\n return lines.join('\\n')\n}\n\nexport function generateCSharp(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n const contentType = request.headers['Content-Type'] ?? 'application/json'\n\n const lines: string[] = []\n lines.push('using var client = new HttpClient();')\n lines.push('')\n\n if (hasBody) {\n lines.push('var content = new StringContent(')\n lines.push(` @\"${(request.body as string).replace(/\"/g, '\"\"')}\",`)\n lines.push(' System.Text.Encoding.UTF8,')\n lines.push(` \"${contentType}\");`)\n lines.push('')\n }\n\n const nonContentHeaders = headers.filter(([k]) => k !== 'Content-Type')\n for (const [key, value] of nonContentHeaders) {\n lines.push(`client.DefaultRequestHeaders.Add(\"${key}\", \"${value}\");`)\n }\n if (nonContentHeaders.length > 0) lines.push('')\n\n const methodMap: Record<string, string> = {\n GET: 'GetAsync',\n POST: 'PostAsync',\n PUT: 'PutAsync',\n DELETE: 'DeleteAsync',\n PATCH: 'PatchAsync',\n }\n\n const asyncMethod = methodMap[method] ?? 'SendAsync'\n\n if (hasBody && (method === 'POST' || method === 'PUT' || method === 'PATCH')) {\n lines.push(`var response = await client.${asyncMethod}(\"${url}\", content);`)\n } else if (method === 'GET' || method === 'DELETE') {\n lines.push(`var response = await client.${asyncMethod}(\"${url}\");`)\n } else {\n lines.push(`var request = new HttpRequestMessage(HttpMethod.${method.charAt(0) + method.slice(1).toLowerCase()}, \"${url}\");`)\n if (hasBody) lines.push('request.Content = content;')\n lines.push('var response = await client.SendAsync(request);')\n }\n\n lines.push('var body = await response.Content.ReadAsStringAsync();')\n lines.push('Console.WriteLine(body);')\n\n return lines.join('\\n')\n}\n\nexport type CodeLanguageId = 'curl' | 'javascript' | 'python' | 'go' | 'java' | 'csharp'\n\nexport interface CodeLanguageOption {\n id: CodeLanguageId\n label: string\n prismLanguage: string\n}\n\nexport const CODE_LANGUAGES: CodeLanguageOption[] = [\n { id: 'curl', label: 'cURL', prismLanguage: 'bash' },\n { id: 'javascript', label: 'JavaScript', prismLanguage: 'javascript' },\n { id: 'python', label: 'Python', prismLanguage: 'python' },\n { id: 'go', label: 'Go', prismLanguage: 'go' },\n { id: 'java', label: 'Java', prismLanguage: 'java' },\n { id: 'csharp', label: 'C#', prismLanguage: 'csharp' },\n]\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useMemo, useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { TryItRequest } from '@core/types/try-it.types'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport type { CodeLanguage } from '@core/components/CodeBlock/CodeBlock'\nimport { generateCurl } from '@core/components/TryIt/curl-generator'\nimport {\n generateJavaScript,\n generatePython,\n generateGo,\n generateJava,\n generateCSharp,\n CODE_LANGUAGES,\n} from '@core/components/TryIt/code-generators'\nimport type { CodeLanguageId } from '@core/components/TryIt/code-generators'\nimport { generateExample } from '@core/components/SchemaViewer/schema-utils'\nimport { ExampleSelector, getNamedExamples } from '@core/components/common/ExampleSelector'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface ResponseSample {\n statusCode: string\n description: string\n content?: Record<string, {\n schema?: Record<string, unknown>\n example?: unknown\n examples?: Record<string, { value: unknown }>\n }>\n}\n\nexport interface SamplesPanelProps {\n method: string\n path: string\n serverUrl: string\n operationId: string\n requestBodySchema?: Record<string, unknown>\n requestBodyContentType?: string\n responses: ResponseSample[]\n onPropertyClick?: (propertyPath: string) => void\n}\n\n// ---------------------------------------------------------------------------\n// Code generators map\n// ---------------------------------------------------------------------------\n\nconst generators: Record<CodeLanguageId, (req: TryItRequest, url: string) => string> = {\n curl: generateCurl,\n javascript: generateJavaScript,\n python: generatePython,\n go: generateGo,\n java: generateJava,\n csharp: generateCSharp,\n}\n\n// ---------------------------------------------------------------------------\n// Status-code colour helpers\n// ---------------------------------------------------------------------------\n\nfunction getStatusColor(statusCode: string): string {\n const code = parseInt(statusCode, 10)\n if (code >= 200 && code < 300) return 'var(--omnispec-color-success)'\n if (code >= 400 && code < 500) return 'var(--omnispec-color-warning)'\n if (code >= 500) return 'var(--omnispec-color-error)'\n return 'var(--omnispec-fg-muted)'\n}\n\nfunction getStatusBg(statusCode: string): string {\n const code = parseInt(statusCode, 10)\n if (code >= 200 && code < 300) return 'rgba(26, 127, 55, 0.15)'\n if (code >= 400 && code < 500) return 'rgba(191, 135, 0, 0.15)'\n if (code >= 500) return 'rgba(207, 34, 46, 0.15)'\n return 'var(--omnispec-bg-secondary)'\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function SamplesPanel({\n method,\n path,\n serverUrl,\n requestBodySchema,\n requestBodyContentType = 'application/json',\n responses,\n}: SamplesPanelProps) {\n const [selectedLang, setSelectedLang] = useState<CodeLanguageId>('curl')\n const [selectedResponseIndex, setSelectedResponseIndex] = useState(0)\n const [selectedExampleName, setSelectedExampleName] = useState<string>('')\n\n // Build a minimal TryItRequest from props so we can feed it to generators\n const request = useMemo<TryItRequest>(() => {\n const headers: Record<string, string> = {}\n const hasBody = requestBodySchema && ['post', 'put', 'patch', 'delete'].includes(method.toLowerCase())\n\n if (hasBody) {\n headers['Content-Type'] = requestBodyContentType\n }\n\n const body = hasBody\n ? JSON.stringify(generateExample(requestBodySchema!), null, 2)\n : undefined\n\n return {\n url: path,\n method: method.toUpperCase(),\n headers,\n queryParams: {},\n pathParams: {},\n body,\n }\n }, [method, path, requestBodySchema, requestBodyContentType])\n\n // Generated code for the selected language\n const requestCode = useMemo(() => {\n const generator = generators[selectedLang]\n return generator ? generator(request, serverUrl) : ''\n }, [request, serverUrl, selectedLang])\n\n const langOption = CODE_LANGUAGES.find((l) => l.id === selectedLang)\n const prismLang = (langOption?.prismLanguage ?? 'text') as CodeLanguage\n\n // Response data for the selected tab\n const activeResponse = responses[selectedResponseIndex] ?? null\n\n const { namedExamples, responseContentType } = useMemo(() => {\n if (!activeResponse?.content) return { namedExamples: [], responseContentType: null }\n const firstContentType = Object.keys(activeResponse.content)[0]\n const firstMedia = activeResponse.content[firstContentType]\n if (!firstMedia) return { namedExamples: [], responseContentType: firstContentType }\n\n const examples = getNamedExamples(firstMedia as { example?: unknown; examples?: Record<string, { summary?: string; value: unknown }> })\n if (examples.length === 0 && firstMedia.schema) {\n return {\n namedExamples: [{ name: 'generated', value: generateExample(firstMedia.schema as Record<string, unknown>) }],\n responseContentType: firstContentType,\n }\n }\n return { namedExamples: examples, responseContentType: firstContentType }\n }, [activeResponse])\n\n const responseExampleCode = useMemo(() => {\n if (namedExamples.length === 0) return null\n const target = selectedExampleName\n ? namedExamples.find((ex) => ex.name === selectedExampleName)\n : namedExamples[0]\n const value = target?.value ?? namedExamples[0]?.value ?? null\n if (value === null) return null\n return typeof value === 'string' ? value : JSON.stringify(value, null, 2)\n }, [namedExamples, selectedExampleName])\n\n // Language tab bar rendered into CodeBlock headerLeft\n const languageTabs = (\n <div className={languageBarStyle}>\n {CODE_LANGUAGES.map((lang) => (\n <button\n key={lang.id}\n type=\"button\"\n onClick={() => setSelectedLang(lang.id)}\n className={cx(langBtnStyle, selectedLang === lang.id && langBtnActiveStyle)}\n >\n {lang.label}\n </button>\n ))}\n </div>\n )\n\n return (\n <div className={panelStyle}>\n {/* ------------------------------------------------------------------ */}\n {/* Request Samples */}\n {/* ------------------------------------------------------------------ */}\n <div className={sectionStyle}>\n <div className={sectionHeaderStyle}>\n <span className={sectionTitleStyle}>Request samples</span>\n {requestBodyContentType && (\n <code className={contentTypeBadgeStyle}>{requestBodyContentType}</code>\n )}\n </div>\n\n <CodeBlock\n code={requestCode}\n language={prismLang}\n showCopy={true}\n headerLeft={languageTabs}\n />\n </div>\n\n {/* ------------------------------------------------------------------ */}\n {/* Response Samples */}\n {/* ------------------------------------------------------------------ */}\n {responses.length > 0 && (\n <div className={sectionStyle}>\n <div className={sectionHeaderStyle}>\n <span className={sectionTitleStyle}>Response samples</span>\n </div>\n\n {/* Status code tab pills */}\n <div className={statusTabsStyle}>\n {responses.map((res, idx) => {\n const color = getStatusColor(res.statusCode)\n const bg = getStatusBg(res.statusCode)\n const isActive = idx === selectedResponseIndex\n\n return (\n <button\n key={res.statusCode}\n type=\"button\"\n onClick={() => {\n setSelectedResponseIndex(idx); setSelectedExampleName('')\n }}\n className={cx(statusTabStyle, isActive && statusTabActiveStyle)}\n style={\n {\n '--status-color': color,\n '--status-bg': bg,\n } as React.CSSProperties\n }\n title={res.description}\n >\n {res.statusCode}\n </button>\n )\n })}\n </div>\n\n {/* Response code block */}\n {responseExampleCode !== null ? (\n <div>\n <div className={contentTypeLabelStyle}>\n <code className={contentTypeBadgeStyle}>{responseContentType}</code>\n </div>\n {namedExamples.length > 1 && (\n <ExampleSelector\n examples={namedExamples}\n selectedName={selectedExampleName || namedExamples[0]?.name}\n onSelect={setSelectedExampleName}\n />\n )}\n <CodeBlock\n code={responseExampleCode}\n language=\"json\"\n showCopy={true}\n />\n </div>\n ) : (\n <div className={emptyStateStyle}>No response sample available.</div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst panelStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1.5rem',\n})\n\nconst sectionStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n})\n\nconst sectionHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n flexWrap: 'wrap',\n})\n\nconst sectionTitleStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n [mq.desktop]: {\n fontSize: 'var(--omnispec-font-size-base)',\n },\n})\n\nconst contentTypeBadgeStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n padding: '0.125rem 0.375rem',\n borderRadius: 'var(--omnispec-border-radius)',\n})\n\nconst languageBarStyle = css({\n display: 'flex',\n gap: '0.125rem',\n overflowX: 'auto',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n})\n\nconst langBtnStyle = css({\n padding: '0.25rem 0.5rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 500,\n color: 'var(--omnispec-fg-muted)',\n whiteSpace: 'nowrap',\n borderRadius: 'var(--omnispec-border-radius)',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst langBtnActiveStyle = css({\n color: 'var(--omnispec-color-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n fontWeight: 600,\n})\n\nconst statusTabsStyle = css({\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0.375rem',\n})\n\n// Status tabs use CSS custom properties set via inline style so each tab\n// can carry its own colour without a unique class per status code.\nconst statusTabStyle = css({\n padding: '0.25rem 0.625rem',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 600,\n fontFamily: 'var(--omnispec-font-mono)',\n opacity: 0.65,\n backgroundColor: 'var(--status-bg)',\n color: 'var(--status-color)',\n transition: 'opacity 0.15s, box-shadow 0.15s',\n '&:hover': {\n opacity: 0.85,\n },\n})\n\nconst statusTabActiveStyle = css({\n opacity: 1,\n boxShadow: '0 0 0 1px var(--status-color)',\n})\n\nconst contentTypeLabelStyle = css({\n marginBottom: '0.25rem',\n})\n\nconst emptyStateStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-muted)',\n padding: '0.75rem 0',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport { css } from '@core/styles/css'\nimport { Icon } from './Icon'\n\ninterface LinkableHeadingProps {\n id: string\n as?: 'h2' | 'h3' | 'h4' | 'h5'\n className?: string\n children: ReactNode\n}\n\nexport function LinkableHeading({ id, as: Tag = 'h3', className, children }: LinkableHeadingProps) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = useCallback((e: React.MouseEvent) => {\n e.preventDefault()\n const url = `${window.location.origin}${window.location.pathname}#${id}`\n navigator.clipboard.writeText(url).then(() => {\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n })\n }, [id])\n\n return (\n <Tag id={id} className={`${containerStyle} ${className ?? ''}`}>\n {children}\n <a\n href={`#${id}`}\n onClick={handleCopy}\n className={linkIconStyle}\n aria-label=\"Copy link to section\"\n title={copied ? 'Copied!' : 'Copy link'}\n >\n <Icon name=\"link\" size=\"0.75em\" />\n </a>\n </Tag>\n )\n}\n\nconst containerStyle = css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n '&:hover a': {\n opacity: 1,\n },\n})\n\nconst linkIconStyle = css({\n opacity: 0,\n color: 'var(--omnispec-fg-muted)',\n transition: 'opacity 0.15s',\n flexShrink: 0,\n lineHeight: 1,\n textDecoration: 'none',\n '&:hover': {\n color: 'var(--omnispec-color-primary)',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useEffect } from 'react'\nimport type { ReactNode } from 'react'\nimport { css } from '../../styles/css'\n\ninterface ModalProps {\n open: boolean\n onClose: () => void\n title?: string\n children: ReactNode\n}\n\nexport function Modal({ open, onClose, title, children }: ModalProps) {\n useEffect(() => {\n if (!open) return undefined\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n document.addEventListener('keydown', handleKey)\n document.body.style.overflow = 'hidden'\n return () => {\n document.removeEventListener('keydown', handleKey)\n document.body.style.overflow = ''\n }\n }, [open, onClose])\n\n if (!open) return null\n\n return (\n <>\n <div\n className={backdropStyle}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n <div\n className={dialogStyle}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n >\n <div className={headerStyle}>\n {title && <h3 className={titleStyle}>{title}</h3>}\n <button\n type=\"button\"\n onClick={onClose}\n className={closeBtnStyle}\n aria-label=\"Close\"\n >\n ×\n </button>\n </div>\n <div className={bodyStyle}>\n {children}\n </div>\n </div>\n </>\n )\n}\n\nconst backdropStyle = css({\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 1100,\n})\n\nconst dialogStyle = css({\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxWidth: '768px',\n maxHeight: '85vh',\n backgroundColor: 'var(--omnispec-bg-primary)',\n borderRadius: '12px',\n boxShadow: '0 20px 60px rgba(0, 0, 0, 0.2)',\n zIndex: 1101,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n})\n\nconst headerStyle = css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '16px 20px',\n borderBottom: '1px solid var(--omnispec-border-color)',\n})\n\nconst titleStyle = css({\n margin: 0,\n fontSize: 'var(--omnispec-h3-font-size)',\n fontWeight: 600,\n color: 'var(--omnispec-color-primary)',\n})\n\nconst closeBtnStyle = css({\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n lineHeight: 1,\n color: 'var(--omnispec-fg-muted)',\n padding: '4px 8px',\n borderRadius: '4px',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst bodyStyle = css({\n padding: '20px',\n overflowY: 'auto',\n flex: 1,\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\n/**\n * Try-It input persistence.\n *\n * Non-sensitive form state (parameter values, request body, content type,\n * custom headers) is persisted to localStorage, namespaced per spec and\n * operation, so it survives navigation and reloads. Auth tokens are NOT\n * stored here — they live in sessionStorage only (see AuthContext).\n */\n\nexport interface PersistedTryItState {\n paramValues?: Record<string, string>\n body?: string\n contentType?: string\n /** Text-only form field values (files are never persisted). */\n formFields?: Record<string, string>\n /** Custom user-added headers. */\n customHeaders?: Array<{ name: string; value: string }>\n}\n\nconst PREFIX = 'omnispec:tryit'\n\n/** Storage envelope: state plus the epoch-ms timestamp it was saved at. */\ninterface PersistedEnvelope {\n savedAt: number\n state: PersistedTryItState\n}\n\nfunction storageKey(specKey: string, operationKey: string): string {\n return `${PREFIX}:${specKey}:${operationKey}`\n}\n\nfunction isEnvelope(value: unknown): value is PersistedEnvelope {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as PersistedEnvelope).savedAt === 'number' &&\n typeof (value as PersistedEnvelope).state === 'object' &&\n (value as PersistedEnvelope).state !== null\n )\n}\n\nfunction getStorage(): Storage | null {\n try {\n if (typeof window === 'undefined' || !window.localStorage) return null\n // Validate the API surface — some environments expose a stub object.\n if (typeof window.localStorage.setItem !== 'function' || typeof window.localStorage.getItem !== 'function') {\n return null\n }\n return window.localStorage\n } catch {\n // Access can throw in sandboxed iframes / privacy modes.\n return null\n }\n}\n\n/**\n * Loads persisted Try-It state.\n *\n * `ttlSeconds` bounds the age of restored entries: entries older than the TTL\n * (and legacy entries with no timestamp, whose age is unknowable) are removed\n * and treated as absent. `0` disables persistence — nothing is restored.\n * `undefined` means no expiration.\n */\nexport function loadTryItState(\n specKey: string | undefined,\n operationKey: string,\n ttlSeconds?: number,\n): PersistedTryItState | null {\n if (!specKey) return null\n if (ttlSeconds === 0) return null\n const storage = getStorage()\n if (!storage) return null\n const key = storageKey(specKey, operationKey)\n try {\n const raw = storage.getItem(key)\n if (!raw) return null\n const parsed: unknown = JSON.parse(raw)\n if (isEnvelope(parsed)) {\n if (ttlSeconds !== undefined && Date.now() - parsed.savedAt > ttlSeconds * 1000) {\n storage.removeItem(key)\n return null\n }\n return parsed.state\n }\n // Legacy bare-state entry (pre-envelope format, no timestamp).\n if (parsed && typeof parsed === 'object') {\n if (ttlSeconds !== undefined) {\n // Age unknown — with a TTL configured, err on the side of expiry.\n storage.removeItem(key)\n return null\n }\n return parsed as PersistedTryItState\n }\n return null\n } catch {\n return null\n }\n}\n\nexport function saveTryItState(\n specKey: string | undefined,\n operationKey: string,\n state: PersistedTryItState,\n): void {\n if (!specKey) return\n const storage = getStorage()\n if (!storage) return\n try {\n const envelope: PersistedEnvelope = { savedAt: Date.now(), state }\n storage.setItem(storageKey(specKey, operationKey), JSON.stringify(envelope))\n } catch {\n // Quota exceeded or storage disabled — persistence is best-effort.\n }\n}\n\nconst PANEL_WIDTH_KEY = `${PREFIX}:panel-width`\n\n/** Loads the persisted Try-It panel width in pixels (global, not per operation). */\nexport function loadPanelWidth(): number | null {\n const storage = getStorage()\n if (!storage) return null\n try {\n const raw = storage.getItem(PANEL_WIDTH_KEY)\n if (!raw) return null\n const value = Number(raw)\n return Number.isFinite(value) && value > 0 ? value : null\n } catch {\n return null\n }\n}\n\n/** Persists the Try-It panel width in pixels. */\nexport function savePanelWidth(width: number): void {\n const storage = getStorage()\n if (!storage) return\n try {\n storage.setItem(PANEL_WIDTH_KEY, String(Math.round(width)))\n } catch {\n // Best-effort.\n }\n}\n\nexport function clearTryItState(specKey: string | undefined, operationKey: string): void {\n if (!specKey) return\n const storage = getStorage()\n if (!storage) return\n try {\n storage.removeItem(storageKey(specKey, operationKey))\n } catch {\n // Best-effort.\n }\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useRef, useState } from 'react'\nimport type { CSSProperties, PointerEvent as ReactPointerEvent } from 'react'\nimport { css } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport { loadPanelWidth, savePanelWidth } from '@core/utils/tryit-storage'\n\ninterface ResponsiveColumnsProps {\n left: React.ReactNode\n right?: React.ReactNode\n rightLabel?: string\n}\n\n/** Resize bounds for the right (Try-It) column. */\nconst MIN_RIGHT_WIDTH = 320\nconst MAX_RIGHT_FRACTION = 0.65\n\nconst singleColumnStyle = css({\n padding: '0.75rem 0',\n minWidth: 0,\n [mq.desktop]: {\n padding: '1rem 1.25rem',\n },\n})\n\nconst gridStyle = css({\n maxWidth: '100%',\n [mq.desktop]: {\n display: 'grid',\n // The custom property is set inline while a user-chosen width is active;\n // it falls back to a 65/35 split (content-heavy left, Try-It on the right).\n gridTemplateColumns: '1fr 0.375rem var(--omnispec-tryit-col, calc(35% - 0.375rem))',\n },\n})\n\nconst leftColumnStyle = css({\n padding: '0.75rem 0',\n minWidth: 0,\n [mq.desktop]: {\n padding: '1rem 1.25rem',\n },\n})\n\nconst toggleButtonStyle = css({\n display: 'block',\n width: '100%',\n padding: '10px 16px',\n marginTop: '12px',\n borderRadius: 'var(--omnispec-border-radius)',\n background: 'var(--omnispec-color-primary, #1a1a2e)',\n color: '#fff',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-base)',\n fontWeight: 500,\n textAlign: 'center',\n [mq.desktop]: {\n display: 'none',\n },\n})\n\nconst rightColumnStyle = css({\n padding: '0.75rem 0',\n background: 'var(--omnispec-bg-secondary)',\n minWidth: 0,\n display: 'none',\n '&[data-mobile-visible]': {\n display: 'block',\n borderTop: '1px solid var(--omnispec-border-color)',\n },\n [mq.desktop]: {\n display: 'block',\n padding: '1rem 1.25rem',\n borderTop: 'none',\n },\n})\n\nconst resizeHandleStyle = css({\n display: 'none',\n [mq.desktop]: {\n display: 'block',\n cursor: 'col-resize',\n backgroundColor: 'var(--omnispec-border-color)',\n borderRadius: '0.1875rem',\n transition: 'background-color 0.15s ease',\n marginTop: '1rem',\n marginBottom: '1rem',\n '&:hover, &[data-dragging]': {\n backgroundColor: 'var(--omnispec-color-primary)',\n },\n },\n})\n\nconst draggingContainerStyle = css({\n userSelect: 'none',\n})\n\nexport function ResponsiveColumns({ left, right, rightLabel = 'Try It' }: ResponsiveColumnsProps) {\n const [showRight, setShowRight] = useState(false)\n const [rightWidth, setRightWidth] = useState<number | null>(() => loadPanelWidth())\n const [dragging, setDragging] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n const startDrag = (e: ReactPointerEvent<HTMLDivElement>) => {\n e.preventDefault()\n setDragging(true)\n\n const onMove = (ev: PointerEvent) => {\n const rect = containerRef.current?.getBoundingClientRect()\n if (!rect) return\n const raw = rect.right - ev.clientX\n const max = rect.width * MAX_RIGHT_FRACTION\n setRightWidth(Math.min(max, Math.max(MIN_RIGHT_WIDTH, raw)))\n }\n const onUp = () => {\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n setDragging(false)\n setRightWidth((width) => {\n if (width !== null) savePanelWidth(width)\n return width\n })\n }\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n }\n\n if (!right) {\n return (\n <div className={singleColumnStyle}>\n {left}\n </div>\n )\n }\n\n const containerStyle: CSSProperties | undefined = rightWidth !== null\n ? ({ '--omnispec-tryit-col': `${rightWidth}px` } as CSSProperties)\n : undefined\n\n return (\n <div\n ref={containerRef}\n className={`${gridStyle} ${dragging ? draggingContainerStyle : ''}`}\n style={containerStyle}\n >\n <div className={leftColumnStyle}>\n {left}\n <button\n type=\"button\"\n className={toggleButtonStyle}\n onClick={() => setShowRight((prev) => !prev)}\n >\n {showRight ? 'Hide' : rightLabel}\n </button>\n </div>\n <div\n className={resizeHandleStyle}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={`Resize ${rightLabel} panel`}\n onPointerDown={startDrag}\n {...(dragging ? { 'data-dragging': '' } : {})}\n />\n <div\n className={rightColumnStyle}\n {...(showRight ? { 'data-mobile-visible': '' } : {})}\n >\n {right}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { ProxyRequest, ProxyResponse, TryItRequest, TryItResponse } from '../types/try-it.types'\n\nexport async function sendProxiedRequest(\n proxyUrl: string,\n request: TryItRequest,\n /**\n * Headers attached to the request the BROWSER sends TO the proxy\n * endpoint — not to the upstream target. Use for custom auth /\n * referer guards on the consumer's own backend. `Content-Type` is\n * always set; anything here takes precedence.\n */\n proxyHeaders?: Record<string, string>,\n): Promise<TryItResponse> {\n const targetUrl = buildTargetUrl(request)\n\n const proxyPayload: ProxyRequest = {\n url: targetUrl,\n method: request.method,\n headers: request.headers,\n timeout: 30000,\n }\n\n if (request.body) {\n if (typeof request.body === 'string') {\n proxyPayload.body = request.body\n proxyPayload.bodyEncoding = 'utf-8'\n } else {\n // FormData: encode the real multipart payload (with boundary) and ship\n // it base64 inside the JSON envelope. The proxy decodes it back to bytes\n // and forwards it unchanged, so file uploads survive the round trip.\n const { body, contentType } = await encodeMultipartBody(request.body)\n proxyPayload.body = body\n proxyPayload.bodyEncoding = 'base64'\n proxyPayload.headers = { ...proxyPayload.headers, 'Content-Type': contentType }\n }\n }\n\n const startTime = performance.now()\n\n const response = await fetch(proxyUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...proxyHeaders },\n body: JSON.stringify(proxyPayload),\n })\n\n if (!response.ok) {\n throw new Error(`Proxy request failed: ${response.status} ${response.statusText}`)\n }\n\n const proxyResponse: ProxyResponse = await response.json()\n const duration = performance.now() - startTime\n\n return {\n status: proxyResponse.status,\n statusText: proxyResponse.statusText,\n headers: proxyResponse.headers,\n body: proxyResponse.body,\n bodyEncoding: proxyResponse.bodyEncoding ?? 'utf-8',\n contentType: proxyResponse.headers['content-type'] ?? 'text/plain',\n duration: proxyResponse.duration ?? duration,\n }\n}\n\n/**\n * Serializes a FormData instance to its real `multipart/form-data` wire format\n * (including the boundary) and returns it base64-encoded, plus the exact\n * Content-Type header (with boundary) to forward. Manual serialization keeps\n * behavior identical across browsers, jsdom, and Node.\n */\n/** Reads a Blob/File into bytes, falling back to FileReader where Blob.arrayBuffer is unavailable. */\nasync function blobToBytes(value: Blob): Promise<Uint8Array> {\n if (typeof value.arrayBuffer === 'function') {\n return new Uint8Array(await value.arrayBuffer())\n }\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => resolve(new Uint8Array(reader.result as ArrayBuffer))\n reader.onerror = () => reject(reader.error)\n reader.readAsArrayBuffer(value)\n })\n}\n\nasync function encodeMultipartBody(formData: FormData): Promise<{ body: string; contentType: string }> {\n const boundary = `----omnispec${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`\n const encoder = new TextEncoder()\n const chunks: Uint8Array[] = []\n const push = (s: string) => chunks.push(encoder.encode(s))\n\n const entries: Array<[string, FormDataEntryValue]> = []\n formData.forEach((value, key) => entries.push([key, value]))\n\n for (const [key, value] of entries) {\n push(`--${boundary}\\r\\n`)\n if (typeof value === 'string') {\n push(`Content-Disposition: form-data; name=\"${key}\"\\r\\n\\r\\n`)\n push(`${value}\\r\\n`)\n } else {\n const filename = value.name || 'file'\n const fileType = value.type || 'application/octet-stream'\n push(`Content-Disposition: form-data; name=\"${key}\"; filename=\"${filename}\"\\r\\n`)\n push(`Content-Type: ${fileType}\\r\\n\\r\\n`)\n chunks.push(await blobToBytes(value))\n push('\\r\\n')\n }\n }\n push(`--${boundary}--\\r\\n`)\n\n const total = chunks.reduce((n, c) => n + c.length, 0)\n const bytes = new Uint8Array(total)\n let offset = 0\n for (const c of chunks) {\n bytes.set(c, offset)\n offset += c.length\n }\n\n // Convert to base64 in chunks to avoid call-stack limits on large files.\n let binary = ''\n const CHUNK = 0x8000\n for (let i = 0; i < bytes.length; i += CHUNK) {\n binary += String.fromCharCode(...bytes.subarray(i, i + CHUNK))\n }\n return { body: btoa(binary), contentType: `multipart/form-data; boundary=${boundary}` }\n}\n\nfunction buildTargetUrl(request: TryItRequest): string {\n let url = request.url\n\n // Replace path parameters\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n\n // Add query parameters\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) {\n params.append(key, v)\n }\n } else {\n params.set(key, value)\n }\n }\n const separator = url.includes('?') ? '&' : '?'\n url = `${url}${separator}${params.toString()}`\n }\n\n return url\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { TryItRequest, TryItResponse } from '../types/try-it.types'\nimport { isBinaryContentType, bytesToBase64 } from './binary-response'\n\nexport async function sendDirectRequest(\n request: TryItRequest,\n): Promise<TryItResponse> {\n const url = upgradeMixedContent(buildTargetUrl(request))\n\n const init: RequestInit = {\n method: request.method,\n headers: request.headers,\n }\n\n if (request.body) {\n init.body = typeof request.body === 'string' ? request.body : request.body\n }\n\n const startTime = performance.now()\n\n const response = await fetch(url, init)\n\n const duration = performance.now() - startTime\n const contentType = response.headers.get('content-type') ?? 'text/plain'\n\n // Binary responses are read as bytes and base64-encoded so the UI can offer\n // a download instead of mangling them through .text().\n let body: string\n let bodyEncoding: 'utf-8' | 'base64' = 'utf-8'\n if (isBinaryContentType(contentType)) {\n body = bytesToBase64(new Uint8Array(await response.arrayBuffer()))\n bodyEncoding = 'base64'\n } else {\n body = await response.text()\n }\n\n const headers: Record<string, string> = {}\n response.headers.forEach((value, key) => {\n headers[key] = value\n })\n\n return {\n status: response.status,\n statusText: response.statusText,\n headers,\n body,\n bodyEncoding,\n contentType,\n duration,\n }\n}\n\n/**\n * Upgrade an `http://` target to `https://` when the page itself is served over\n * https. Browsers block plain-http requests from an https page as mixed content\n * (the fetch never leaves the browser), and many specs still declare a stale\n * `http://` server URL. Only upgrades on secure pages — on an http page a real\n * http-only API (e.g. a local dev server) must still be reachable.\n */\nexport function upgradeMixedContent(url: string): string {\n if (\n typeof window !== 'undefined' &&\n window.location?.protocol === 'https:' &&\n url.startsWith('http://')\n ) {\n return `https://${url.slice('http://'.length)}`\n }\n return url\n}\n\nfunction buildTargetUrl(request: TryItRequest): string {\n let url = request.url\n\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) {\n params.append(key, v)\n }\n } else {\n params.set(key, value)\n }\n }\n const separator = url.includes('?') ? '&' : '?'\n url = `${url}${separator}${params.toString()}`\n }\n\n return url\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useMemo } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport type { TryItRequest } from '@core/types/try-it.types'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport type { CodeLanguage } from '@core/components/CodeBlock/CodeBlock'\nimport { generateCurl } from './curl-generator'\nimport {\n generateJavaScript,\n generatePython,\n generateGo,\n generateJava,\n generateCSharp,\n CODE_LANGUAGES,\n} from './code-generators'\nimport type { CodeLanguageId } from './code-generators'\n\ninterface CodeSamplesProps {\n request: TryItRequest\n serverUrl: string\n selectedLanguage: CodeLanguageId\n onLanguageChange: (lang: CodeLanguageId) => void\n xCodeSamples?: XCodeSample[]\n}\n\nexport interface XCodeSample {\n lang: string\n label?: string\n source: string\n}\n\nconst generators: Record<CodeLanguageId, (req: TryItRequest, url: string) => string> = {\n curl: generateCurl,\n javascript: generateJavaScript,\n python: generatePython,\n go: generateGo,\n java: generateJava,\n csharp: generateCSharp,\n}\n\nexport function CodeSamples({\n request,\n serverUrl,\n selectedLanguage,\n onLanguageChange,\n xCodeSamples,\n}: CodeSamplesProps) {\n const code = useMemo(() => {\n if (xCodeSamples) {\n const custom = xCodeSamples.find(\n (s) => s.lang.toLowerCase() === selectedLanguage || s.label?.toLowerCase() === selectedLanguage,\n )\n if (custom) return custom.source\n }\n const generator = generators[selectedLanguage]\n return generator ? generator(request, serverUrl) : ''\n }, [request, serverUrl, selectedLanguage, xCodeSamples])\n\n const langOption = CODE_LANGUAGES.find((l) => l.id === selectedLanguage)\n const prismLang = langOption?.prismLanguage ?? 'text'\n\n const languageTabs = (\n <div className={languageBarStyle}>\n {CODE_LANGUAGES.map((lang) => (\n <button\n key={lang.id}\n type=\"button\"\n onClick={() => onLanguageChange(lang.id)}\n className={cx(langBtnStyle, selectedLanguage === lang.id && langBtnActiveStyle)}\n >\n {lang.label}\n </button>\n ))}\n </div>\n )\n\n return (\n <div className={containerStyle}>\n <CodeBlock\n code={code}\n language={prismLang as CodeLanguage}\n showCopy={true}\n headerLeft={languageTabs}\n />\n </div>\n )\n}\n\nconst containerStyle = css({\n marginTop: '0.75rem',\n})\n\nconst languageBarStyle = css({\n display: 'flex',\n gap: '0.125rem',\n overflowX: 'auto',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n})\n\nconst langBtnStyle = css({\n padding: '0.25rem 0.5rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 500,\n color: 'var(--omnispec-fg-muted)',\n whiteSpace: 'nowrap',\n borderRadius: 'var(--omnispec-border-radius)',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst langBtnActiveStyle = css({\n color: 'var(--omnispec-color-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n fontWeight: 600,\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { css } from '@core/styles/css'\nimport type { TryItResponse } from '@core/types/try-it.types'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport type { CodeLanguage } from '@core/components/CodeBlock/CodeBlock'\nimport { Tabs } from '@core/components/common/Tabs'\nimport { Button } from '@core/components/common/Button'\nimport { base64ToBlob, filenameForResponse } from '@core/utils/binary-response'\n\ninterface ResponseViewerProps {\n response: TryItResponse | null\n loading?: boolean\n error?: string\n}\n\nconst containerStyle = css({\n marginTop: '12px',\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: 'var(--omnispec-border-radius)',\n padding: '12px',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n})\n\nconst statusBarStyle = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '12px',\n})\n\nconst statusCodeBaseStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontWeight: 700,\n fontSize: 'var(--omnispec-font-size-base)',\n})\n\nconst durationStyle = css({\n color: 'var(--omnispec-fg-muted)',\n fontSize: 'var(--omnispec-font-size-xs)',\n})\n\nconst loadingStyle = css({\n color: 'var(--omnispec-fg-muted)',\n textAlign: 'center',\n padding: '24px',\n})\n\nconst errorStyle = css({\n color: 'var(--omnispec-color-error)',\n padding: '12px',\n})\n\nconst headersStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n})\n\nconst headerRowStyle = css({\n display: 'flex',\n gap: '8px',\n padding: '2px 0',\n})\n\nconst headerKeyStyle = css({\n color: 'var(--omnispec-fg-secondary)',\n fontWeight: 600,\n})\n\nconst headerValueStyle = css({\n color: 'var(--omnispec-fg-primary)',\n wordBreak: 'break-all',\n})\n\nexport function ResponseViewer({ response, loading, error }: ResponseViewerProps) {\n if (loading) {\n return (\n <div className={containerStyle}>\n <div className={loadingStyle}>Sending request...</div>\n </div>\n )\n }\n\n if (error) {\n return (\n <div className={containerStyle}>\n <div className={errorStyle}>{error}</div>\n </div>\n )\n }\n\n if (!response) return null\n\n const statusColor = getStatusColor(response.status)\n const isBinary = response.bodyEncoding === 'base64'\n const bodyLanguage = detectLanguage(response.contentType)\n const formattedBody = isBinary ? '' : formatBody(response.body, bodyLanguage)\n\n const handleDownload = () => {\n const blob = base64ToBlob(response.body, response.contentType)\n const url = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = url\n anchor.download = filenameForResponse(response.headers, response.contentType)\n document.body.appendChild(anchor)\n anchor.click()\n anchor.remove()\n URL.revokeObjectURL(url)\n }\n\n // Approximate decoded size of a base64 payload.\n const binarySize = isBinary ? Math.floor((response.body.length * 3) / 4) : 0\n\n return (\n <div className={`adr-response ${containerStyle}`}>\n <div className={statusBarStyle}>\n <span className={css(statusCodeBaseStyle, { color: statusColor })}>\n {response.status} {response.statusText}\n </span>\n <span className={durationStyle}>{response.duration.toFixed(0)}ms</span>\n </div>\n\n <Tabs\n tabs={[\n {\n id: 'body',\n label: 'Response Body',\n content: isBinary ? (\n <div className={binaryPanelStyle}>\n <span className={binaryInfoStyle}>\n Binary response — {response.contentType.split(';')[0]} ({formatSize(binarySize)})\n </span>\n <Button variant=\"secondary\" onClick={handleDownload}>\n Download\n </Button>\n </div>\n ) : (\n <CodeBlock\n code={formattedBody}\n language={bodyLanguage}\n title={response.contentType}\n maxHeight=\"300px\"\n />\n ),\n },\n {\n id: 'headers',\n label: 'Headers',\n content: (\n <div className={headersStyle}>\n {Object.entries(response.headers).map(([key, value]) => (\n <div key={key} className={headerRowStyle}>\n <span className={headerKeyStyle}>{key}:</span>\n <span className={headerValueStyle}>{value}</span>\n </div>\n ))}\n </div>\n ),\n },\n ]}\n />\n </div>\n )\n}\n\nconst binaryPanelStyle = css({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: '0.75rem',\n padding: '1rem',\n})\n\nconst binaryInfoStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n fontFamily: 'var(--omnispec-font-mono)',\n wordBreak: 'break-all',\n})\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction getStatusColor(status: number): string {\n if (status >= 200 && status < 300) return 'var(--omnispec-color-success)'\n if (status >= 300 && status < 400) return 'var(--omnispec-color-info)'\n if (status >= 400 && status < 500) return 'var(--omnispec-color-warning)'\n return 'var(--omnispec-color-error)'\n}\n\nfunction detectLanguage(contentType: string): CodeLanguage {\n if (contentType.includes('json')) return 'json'\n if (contentType.includes('xml') || contentType.includes('html')) return 'xml'\n if (contentType.includes('yaml') || contentType.includes('yml')) return 'yaml'\n return 'text'\n}\n\nfunction formatBody(body: string, language: CodeLanguage): string {\n if (language === 'json') {\n try {\n return JSON.stringify(JSON.parse(body), null, 2)\n } catch {\n return body\n }\n }\n return body\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport { Icon } from '../common/Icon'\n\ninterface SecretInputProps {\n value: string\n onChange: (value: string) => void\n placeholder?: string\n /** Applied to the underlying input (e.g. the shared auth input style). */\n className?: string\n autoComplete?: string\n 'aria-label'?: string\n}\n\n/**\n * A masked credential input (password/API-key/token). Renders as a password\n * field by default with an eye toggle to reveal/hide the value. Reveal state is\n * local and defaults to hidden, so a persisted secret is never shown until the\n * user explicitly reveals it.\n */\nexport function SecretInput({\n value,\n onChange,\n placeholder,\n className,\n autoComplete,\n 'aria-label': ariaLabel,\n}: SecretInputProps) {\n const [revealed, setRevealed] = useState(false)\n\n return (\n <div className={wrapStyle}>\n <input\n type={revealed ? 'text' : 'password'}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n className={className}\n autoComplete={autoComplete}\n aria-label={ariaLabel}\n // Inline overrides win over the shared class regardless of stylesheet\n // insertion order: fill the wrapper and leave room for the toggle.\n style={{ width: '100%', paddingRight: '2.25rem' }}\n />\n <button\n type=\"button\"\n onClick={() => setRevealed((v) => !v)}\n className={toggleStyle}\n aria-label={revealed ? 'Hide value' : 'Show value'}\n aria-pressed={revealed}\n title={revealed ? 'Hide' : 'Show'}\n >\n <Icon name={revealed ? 'eye-off' : 'eye'} size=\"1rem\" />\n </button>\n </div>\n )\n}\n\nconst wrapStyle = css({\n position: 'relative',\n flex: 1,\n display: 'flex',\n alignItems: 'stretch',\n})\n\nconst toggleStyle = css({\n position: 'absolute',\n right: '4px',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '1.75rem',\n height: '1.75rem',\n padding: 0,\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n color: 'var(--omnispec-fg-muted)',\n borderRadius: 'var(--omnispec-border-radius)',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n },\n '&:focus-visible': {\n outline: '2px solid var(--omnispec-color-primary)',\n outlineOffset: '1px',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\nexport const authStyles = {\n section: css({\n padding: '0.75rem 0',\n borderBottom: '1px solid var(--omnispec-border-color)',\n '&:last-child': {\n borderBottom: 'none',\n },\n }),\n label: css({\n fontWeight: 600,\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-primary)',\n marginBottom: '4px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }),\n hint: css({\n fontWeight: 400,\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n }),\n description: css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n margin: '4px 0 8px',\n }),\n inputRow: css({\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n }),\n input: css({\n flex: 1,\n padding: '6px 10px',\n border: '1px solid var(--omnispec-input-border)',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontFamily: 'var(--omnispec-font-mono)',\n '&:focus': {\n borderColor: 'var(--omnispec-color-primary)',\n outline: 'none',\n },\n '&:hover': {\n borderColor: 'var(--omnispec-color-primary)',\n },\n }),\n applyBtn: css({\n padding: '6px 16px',\n backgroundColor: 'var(--omnispec-color-primary)',\n color: 'var(--omnispec-color-primary-text)',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 500,\n '&:hover': {\n opacity: 0.85,\n },\n }),\n removeBtn: css({\n padding: '6px 16px',\n backgroundColor: 'var(--omnispec-color-error)',\n color: '#fff',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 500,\n '&:hover': {\n opacity: 0.85,\n },\n }),\n} as const\n\ninterface ApiKeyAuthProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied?: boolean\n appliedValue?: AppliedAuthValue\n}\n\nexport function ApiKeyAuth({ scheme, onApply, onRemove, applied, appliedValue }: ApiKeyAuthProps) {\n const [value, setValue] = useState(appliedValue?.input?.value ?? '')\n\n const handleApply = () => {\n if (!value.trim()) return\n const headerName = scheme.in === 'query' ? scheme.name ?? 'api_key' : scheme.name ?? 'X-API-Key'\n onApply({\n schemeId: scheme.id,\n headerName,\n headerValue: value,\n input: { value },\n })\n }\n\n const handleRemove = () => {\n // Clearing the input on remove keeps the field in sync with the removed auth.\n setValue('')\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>({scheme.in}: {scheme.name})</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n <div className={authStyles.inputRow}>\n <SecretInput\n value={value}\n onChange={setValue}\n placeholder=\"Enter API key\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} value`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApply} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css, cx } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue, OAuth2Flow } from '../../types/auth.types'\nimport { authStyles } from './ApiKeyAuth'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\ninterface OAuth2AuthManualProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied: boolean\n appliedValue?: AppliedAuthValue\n /**\n * Currently selected server URL. Carried for parity with {@link OAuth2Auth};\n * the manual shell renders the flow URLs verbatim (no interactive resolution),\n * so it is not used here beyond documenting the contract.\n */\n serverUrl?: string\n}\n\ntype FlowType = 'authorizationCode' | 'implicit' | 'clientCredentials' | 'password'\n\nconst flowLabels: Record<FlowType, string> = {\n authorizationCode: 'Authorization Code',\n implicit: 'Implicit',\n clientCredentials: 'Client Credentials',\n password: 'Resource Owner Password',\n}\n\nconst flowSelectorStyle = css({\n display: 'flex',\n gap: '4px',\n marginBottom: '.5rem',\n})\n\nconst flowTabStyle = css({\n padding: '4px 10px',\n background: 'var(--omnispec-bg-tertiary)',\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n '&:hover': {\n borderColor: 'var(--omnispec-color-primary)',\n },\n})\n\nconst activeFlowTabStyle = css({\n backgroundColor: 'var(--omnispec-color-primary)',\n color: 'var(--omnispec-color-primary-text)',\n borderColor: 'var(--omnispec-color-primary)',\n})\n\nconst flowDetailsStyle = css({\n marginBottom: '0.5rem',\n})\n\nconst urlRowStyle = css({\n display: 'flex',\n gap: '0.5rem',\n fontSize: 'var(--omnispec-font-size-sm)',\n marginBottom: '0.25rem',\n})\n\nconst urlLabelStyle = css({\n color: 'var(--omnispec-fg-muted)',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n marginBottom: '.5rem',\n display: 'inline-block',\n})\n\nconst urlValueStyle = css({\n color: 'var(--omnispec-fg-secondary)',\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-sm)',\n wordBreak: 'break-all',\n})\n\nconst scopesStyle = css({\n marginTop: '0.5rem',\n fontSize: 'var(--omnispec-font-size-sm)',\n})\n\nconst scopeListStyle = css({\n marginTop: '0.25rem',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.125rem',\n})\n\nconst scopeItemStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n})\n\nconst scopeNameStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-secondary)',\n})\n\nconst scopeDescStyle = css({\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst tokenSectionStyle = css({\n marginTop: '8px',\n})\n\nconst flowErrorStyle = css({\n marginTop: '8px',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-color-error)',\n})\n\n/**\n * Manual (non-interactive) OAuth 2.0 authorize shell. Renders read-only flow\n * details — authorization / token / refresh URLs and the declared scopes for\n * each flow — plus a manual access-token entry with Apply / Remove.\n *\n * This is the Free-tier surface: there is no Get Token, no PKCE, no\n * client id/secret, no scope selection and no flow-variable inputs. The only\n * way to authorize is by pasting a token, which is applied verbatim as a\n * `Bearer` credential. The interactive counterpart lives in\n * {@link OAuth2Auth} (Pro-gated).\n */\nexport function OAuth2AuthManual({ scheme, onApply, onRemove, applied, appliedValue }: OAuth2AuthManualProps) {\n const flows = scheme.flows\n const availableFlows = flows ? (Object.entries(flows).filter(([, v]) => v) as [FlowType, OAuth2Flow][]) : []\n const [activeFlow, setActiveFlow] = useState<FlowType>(availableFlows[0]?.[0] ?? 'authorizationCode')\n const [token, setToken] = useState(appliedValue?.input?.token ?? '')\n const [applyError, setApplyError] = useState<string | undefined>(undefined)\n\n const currentFlow = flows?.[activeFlow]\n\n const handleTokenChange = (value: string) => {\n setToken(value)\n if (applyError) setApplyError(undefined)\n }\n\n const handleApplyToken = () => {\n if (!token.trim()) {\n setApplyError('Enter an access token to apply.')\n return\n }\n setApplyError(undefined)\n onApply({\n schemeId: scheme.id,\n headerName: 'Authorization',\n headerValue: `Bearer ${token}`,\n input: { token },\n })\n }\n\n const handleRemove = () => {\n // Clear the access token field so removing the auth also empties the input.\n setToken('')\n setApplyError(undefined)\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>(OAuth 2.0)</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n\n {availableFlows.length > 1 && (\n <div className={flowSelectorStyle}>\n {availableFlows.map(([key]) => (\n <button\n key={key}\n type=\"button\"\n onClick={() => setActiveFlow(key)}\n className={cx(flowTabStyle, key === activeFlow && activeFlowTabStyle)}\n >\n {flowLabels[key]}\n </button>\n ))}\n </div>\n )}\n\n {currentFlow && (\n <div className={flowDetailsStyle}>\n {currentFlow.authorizationUrl && (\n <div className={urlRowStyle}>\n <span className={urlLabelStyle}>Auth URL:</span>\n <code className={urlValueStyle}>{currentFlow.authorizationUrl}</code>\n </div>\n )}\n {currentFlow.tokenUrl && (\n <div className={urlRowStyle}>\n <span className={urlLabelStyle}>Token URL:</span>\n <code className={urlValueStyle}>{currentFlow.tokenUrl}</code>\n </div>\n )}\n {currentFlow.refreshUrl && (\n <div className={urlRowStyle}>\n <span className={urlLabelStyle}>Refresh URL:</span>\n <code className={urlValueStyle}>{currentFlow.refreshUrl}</code>\n </div>\n )}\n {currentFlow.scopes && Object.keys(currentFlow.scopes).length > 0 && (\n <div className={scopesStyle}>\n <span className={urlLabelStyle}>Scopes:</span>\n <div className={scopeListStyle}>\n {Object.entries(currentFlow.scopes).map(([scope, desc]) => (\n <div key={scope} className={scopeItemStyle}>\n <code className={scopeNameStyle}>{scope}</code>\n {desc && <span className={scopeDescStyle}> — {desc}</span>}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n\n <div className={tokenSectionStyle}>\n <div className={authStyles.label}>\n <span className={authStyles.hint}>Enter access token:</span>\n </div>\n <div className={authStyles.inputRow}>\n <SecretInput\n value={token}\n onChange={handleTokenChange}\n placeholder=\"Access token\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} access token`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApplyToken} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n {applyError && <p role=\"alert\" className={flowErrorStyle}>{applyError}</p>}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { authStyles } from './ApiKeyAuth'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\ninterface OpenIdConnectManualProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied: boolean\n appliedValue?: AppliedAuthValue\n /**\n * Selected server URL. Accepted for parity with the discovery-backed\n * OpenIdConnectAuth, but this free shell performs no network resolution.\n */\n serverUrl?: string\n}\n\nconst errorStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-color-error)',\n margin: '4px 0 8px',\n})\n\nconst urlRowStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n margin: '4px 0 8px',\n wordBreak: 'break-all',\n})\n\nconst urlLinkStyle = css({\n color: 'var(--omnispec-color-primary)',\n})\n\n/**\n * OpenID Connect manual shell (`openIdConnect` security scheme, free tier).\n * Shows only what the spec declares — the scheme `description` and its\n * `openIdConnectUrl` (as a link) — plus a manual access-token paste. It performs\n * NO discovery fetch: runtime discovery of the OpenID configuration is a Pro\n * feature (see OpenIdConnectAuth). The free experience is spec data + manual\n * token entry, which never touches the network.\n */\nexport function OpenIdConnectManual({\n scheme,\n onApply,\n onRemove,\n applied,\n appliedValue,\n}: OpenIdConnectManualProps) {\n const [token, setToken] = useState(appliedValue?.input?.token ?? '')\n const [error, setError] = useState<string | undefined>(undefined)\n\n const handleApply = () => {\n if (!token.trim()) {\n setError('Enter an access token to apply.')\n return\n }\n setError(undefined)\n onApply({\n schemeId: scheme.id,\n headerName: 'Authorization',\n headerValue: `Bearer ${token}`,\n input: { token },\n })\n }\n\n const handleRemove = () => {\n setToken('')\n setError(undefined)\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>(OpenID Connect)</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n {scheme.openIdConnectUrl && (\n <p className={urlRowStyle}>\n Discovery URL:{' '}\n <a\n className={urlLinkStyle}\n href={scheme.openIdConnectUrl}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n >\n {scheme.openIdConnectUrl}\n </a>\n </p>\n )}\n <div className={authStyles.label}>\n <span className={authStyles.hint}>Enter access token directly:</span>\n </div>\n <div className={authStyles.inputRow}>\n <SecretInput\n value={token}\n onChange={(value) => {\n setToken(value)\n if (error) setError(undefined)\n }}\n placeholder=\"Access token\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} access token`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApply} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n {error && (\n <p role=\"alert\" className={errorStyle}>\n {error}\n </p>\n )}\n </div>\n )\n}\n"],"names":["getStorage","value","getStatusColor","getStatusBg","contentTypeBadgeStyle","sectionStyle","sectionTitleStyle","containerStyle","generators","languageBarStyle","langBtnStyle","langBtnActiveStyle","buildTargetUrl","errorStyle","urlRowStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenIdConnectManual-DhrAcSCa.js","sources":["../../../src/core/context/AuthContext.tsx","../../../src/core/components/Reference/ReferenceOperationDetail.tsx","../../../src/core/components/TryIt/curl-generator.ts","../../../src/core/components/TryIt/code-generators.ts","../../../src/core/components/Reference/SamplesPanel.tsx","../../../src/core/components/common/LinkableHeading.tsx","../../../src/core/components/common/Modal.tsx","../../../src/core/utils/tryit-storage.ts","../../../src/core/components/common/ResponsiveColumns.tsx","../../../src/core/utils/proxy-client.ts","../../../src/core/utils/direct-client.ts","../../../src/core/components/TryIt/CodeSamples.tsx","../../../src/core/components/TryIt/ResponseViewer.tsx","../../../src/core/components/Auth/SecretInput.tsx","../../../src/core/components/Auth/ApiKeyAuth.tsx","../../../src/core/components/Auth/OAuth2AuthManual.tsx","../../../src/core/components/Auth/OpenIdConnectManual.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport type { AppliedAuthValue, AuthScheme } from '../types/auth.types'\nimport { useConfig } from './ConfigContext'\n\n/**\n * Applied credentials persist to localStorage — but only when the integrator\n * opts in with a positive `tryItPersistTtl` (seconds). The stored envelope\n * carries a savedAt timestamp so entries expire once older than the TTL. When\n * no positive TTL is configured (undefined or 0) nothing is persisted:\n * credentials live in memory for the current page only, and any previously\n * stored entry is cleared. Entries are namespaced per spec so credentials never\n * bleed across different API docs sharing an origin.\n */\nconst AUTH_KEY_PREFIX = 'omnispec:auth'\n\ninterface AuthEnvelope {\n savedAt: number\n values: AppliedAuthValue[]\n}\n\nfunction getStorage(): Storage | null {\n try {\n if (typeof window === 'undefined' || !window.localStorage) return null\n if (typeof window.localStorage.setItem !== 'function' || typeof window.localStorage.getItem !== 'function') {\n return null\n }\n return window.localStorage\n } catch {\n return null\n }\n}\n\n/** Persistence is opt-in: only a finite, positive TTL enables it. */\nfunction persistEnabled(ttlSeconds?: number): boolean {\n return typeof ttlSeconds === 'number' && Number.isFinite(ttlSeconds) && ttlSeconds > 0\n}\n\nfunction authStorageKey(specKey: string): string {\n return `${AUTH_KEY_PREFIX}:${specKey}`\n}\n\nfunction loadPersistedAuth(specKey: string | undefined, ttlSeconds?: number): Map<string, AppliedAuthValue> {\n if (!specKey || !persistEnabled(ttlSeconds)) return new Map()\n const storage = getStorage()\n if (!storage) return new Map()\n const key = authStorageKey(specKey)\n try {\n const raw = storage.getItem(key)\n if (!raw) return new Map()\n const parsed = JSON.parse(raw) as AuthEnvelope\n if (!parsed || typeof parsed.savedAt !== 'number' || !Array.isArray(parsed.values)) {\n storage.removeItem(key)\n return new Map()\n }\n if (Date.now() - parsed.savedAt > (ttlSeconds as number) * 1000) {\n storage.removeItem(key)\n return new Map()\n }\n return new Map(parsed.values.filter((v) => v && v.schemeId).map((v) => [v.schemeId, v]))\n } catch {\n return new Map()\n }\n}\n\nfunction persistAuth(auth: Map<string, AppliedAuthValue>, specKey: string | undefined, ttlSeconds?: number): void {\n if (!specKey) return\n const storage = getStorage()\n if (!storage) return\n const key = authStorageKey(specKey)\n try {\n // When persistence is disabled (or nothing is applied) clear any stale\n // entry so a previously-persisted credential can't linger.\n if (!persistEnabled(ttlSeconds) || auth.size === 0) {\n storage.removeItem(key)\n return\n }\n const envelope: AuthEnvelope = { savedAt: Date.now(), values: Array.from(auth.values()) }\n storage.setItem(key, JSON.stringify(envelope))\n } catch {\n // Best-effort — storage may be disabled or over quota.\n }\n}\n\ninterface AuthContextValue {\n appliedAuth: Map<string, AppliedAuthValue>\n applyAuth: (value: AppliedAuthValue) => void\n removeAuth: (schemeId: string) => void\n clearAuth: () => void\n getAuthHeaders: () => Record<string, string>\n /** Security schemes available to the Authorize panel. */\n schemes: AuthScheme[]\n /** Whether any security schemes exist (drives the Authorize button). */\n hasAuth: boolean\n /** Whether the Authorize panel modal is open. */\n authPanelOpen: boolean\n openAuthPanel: () => void\n closeAuthPanel: () => void\n}\n\nconst AuthContext = createContext<AuthContextValue>({\n appliedAuth: new Map(),\n applyAuth: () => {},\n removeAuth: () => {},\n clearAuth: () => {},\n getAuthHeaders: () => ({}),\n schemes: [],\n hasAuth: false,\n authPanelOpen: false,\n openAuthPanel: () => {},\n closeAuthPanel: () => {},\n})\n\nexport function useAuth() {\n return useContext(AuthContext)\n}\n\ninterface AuthProviderProps {\n children: ReactNode\n /** Security schemes surfaced by the Authorize panel. */\n schemes?: AuthScheme[]\n}\n\nexport function AuthProvider({ children, schemes = [] }: AuthProviderProps) {\n const { specKey, tryItPersistTtl } = useConfig()\n const [appliedAuth, setAppliedAuth] = useState<Map<string, AppliedAuthValue>>(\n () => loadPersistedAuth(specKey, tryItPersistTtl),\n )\n const [authPanelOpen, setAuthPanelOpen] = useState(false)\n\n useEffect(() => {\n persistAuth(appliedAuth, specKey, tryItPersistTtl)\n }, [appliedAuth, specKey, tryItPersistTtl])\n\n const applyAuth = useCallback((value: AppliedAuthValue) => {\n setAppliedAuth((prev) => {\n const next = new Map(prev)\n next.set(value.schemeId, value)\n return next\n })\n }, [])\n\n const removeAuth = useCallback((schemeId: string) => {\n setAppliedAuth((prev) => {\n const next = new Map(prev)\n next.delete(schemeId)\n return next\n })\n }, [])\n\n const clearAuth = useCallback(() => {\n setAppliedAuth(new Map())\n }, [])\n\n const getAuthHeaders = useCallback((): Record<string, string> => {\n const headers: Record<string, string> = {}\n for (const auth of appliedAuth.values()) {\n headers[auth.headerName] = auth.headerValue\n }\n return headers\n }, [appliedAuth])\n\n const openAuthPanel = useCallback(() => setAuthPanelOpen(true), [])\n const closeAuthPanel = useCallback(() => setAuthPanelOpen(false), [])\n\n const value = useMemo<AuthContextValue>(() => ({\n appliedAuth,\n applyAuth,\n removeAuth,\n clearAuth,\n getAuthHeaders,\n schemes,\n hasAuth: schemes.length > 0,\n authPanelOpen,\n openAuthPanel,\n closeAuthPanel,\n }), [appliedAuth, applyAuth, removeAuth, clearAuth, getAuthHeaders, schemes, authPanelOpen, openAuthPanel, closeAuthPanel])\n\n return (\n <AuthContext.Provider value={value}>\n {children}\n </AuthContext.Provider>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useEffect, useState } from 'react'\nimport { css, cx } from '../../styles/css'\nimport { useExpandAll } from '@core/context/ExpandContext'\nimport { SchemaTree } from '../SchemaViewer/SchemaTree'\nimport { schemaToNodes } from '../SchemaViewer/schema-utils'\nimport { MarkdownRenderer } from '../MarkdownRenderer/MarkdownRenderer'\nimport { Icon } from '../common/Icon'\nimport type { SchemaNode } from '../SchemaViewer/schema-utils'\n\ninterface Parameter {\n name: string\n in: string\n required: boolean\n description?: string\n schema?: Record<string, unknown>\n example?: unknown\n}\n\ninterface RequestBody {\n description?: string\n required?: boolean\n content: Record<string, { schema?: Record<string, unknown> }>\n}\n\ninterface Response {\n statusCode: string\n description: string\n content?: Record<string, { schema?: Record<string, unknown> }>\n}\n\nexport interface ReferenceOperationDetailProps {\n operationId: string\n description?: string\n parameters: Parameter[]\n requestBody?: RequestBody\n responses: Response[]\n security?: string[][]\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction buildParamSchemaNodes(parameters: Parameter[]): SchemaNode[] {\n return parameters.map((p) => ({\n name: p.name,\n type: (p.schema?.type as string) ?? 'any',\n format: p.schema?.format as string | undefined,\n description: p.description,\n required: p.required,\n enum: p.schema?.enum as unknown[] | undefined,\n default: p.schema?.default,\n constraints: [] as string[],\n }))\n}\n\nfunction getStatusColor(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'var(--omnispec-color-success)'\n if (num >= 400 && num < 500) return 'var(--omnispec-color-warning)'\n if (num >= 500) return 'var(--omnispec-color-error)'\n return 'var(--omnispec-fg-primary)'\n}\n\nfunction getStatusBg(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'rgba(26, 127, 55, 0.08)'\n if (num >= 400 && num < 500) return 'rgba(191, 135, 0, 0.08)'\n if (num >= 500) return 'rgba(207, 34, 46, 0.08)'\n return 'var(--omnispec-bg-tertiary)'\n}\n\n// ---------------------------------------------------------------------------\n// ResponseCard — expandable per-response section\n// ---------------------------------------------------------------------------\n\ninterface ResponseCardProps {\n response: Response\n}\n\nfunction ResponseCard({ response }: ResponseCardProps) {\n const [expanded, setExpanded] = useState(false)\n\n // Mirror the document-wide \"expand all\" toggle (generation-gated so the\n // initial mount stays collapsed).\n const { expandAll, expandGeneration } = useExpandAll()\n useEffect(() => {\n if (expandGeneration > 0) {\n setExpanded(!!expandAll)\n }\n }, [expandAll, expandGeneration])\n\n const statusColor = getStatusColor(response.statusCode)\n const statusBg = getStatusBg(response.statusCode)\n\n const hasContent = response.content && Object.keys(response.content).length > 0\n\n // The status pill + description are shared between the expandable (has schema)\n // and static (no schema) presentations.\n const header = (\n <>\n <span\n className={cx(\n statusPillStyle,\n css({ color: statusColor, backgroundColor: 'transparent' }),\n )}\n >\n {response.statusCode}\n </span>\n <span className={responseDescStyle}>{response.description}</span>\n </>\n )\n\n return (\n <div\n className={cx(\n responseCardStyle,\n css({\n borderLeft: `0.1875rem solid ${statusColor}`,\n backgroundColor: statusBg,\n }),\n )}\n >\n {hasContent ? (\n <button\n type=\"button\"\n className={responseCardHeaderStyle}\n onClick={() => setExpanded((prev) => !prev)}\n aria-expanded={expanded}\n >\n <span\n className={cx(\n chevronStyle,\n css({ transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)' }),\n )}\n >\n <Icon name=\"chevron-right\" size=\"0.875rem\" />\n </span>\n {header}\n </button>\n ) : (\n // No response schema — render a static, non-interactive row. The left\n // inset keeps the status pill aligned with the expandable rows' pills.\n <div className={responseCardStaticHeaderStyle}>{header}</div>\n )}\n\n {expanded && hasContent && (\n <div className={responseBodyStyle}>\n {Object.entries(response.content!).map(([contentType, media]) => (\n <div key={contentType}>\n <div className={schemaHeaderRowStyle}>\n <span className={sectionLabelStyle}>Response Schema</span>\n <code className={contentTypeBadgeStyle}>{contentType}</code>\n </div>\n {media.schema && (\n <SchemaTree nodes={schemaToNodes(media.schema)} context=\"response\" />\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ParamSection — renders a group of parameters through the configurable SchemaTree\n// ---------------------------------------------------------------------------\n\ninterface ParamSectionProps {\n title: string\n params: Parameter[]\n}\n\nfunction ParamSection({ title, params }: ParamSectionProps) {\n if (params.length === 0) return null\n const nodes = buildParamSchemaNodes(params)\n\n return (\n <div className={sectionStyle}>\n <h4 className={sectionTitleStyle}>{title}</h4>\n <SchemaTree nodes={nodes} />\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\nexport function ReferenceOperationDetail({\n description,\n parameters,\n requestBody,\n responses,\n security,\n}: ReferenceOperationDetailProps) {\n const pathParams = parameters.filter((p) => p.in === 'path')\n const queryParams = parameters.filter((p) => p.in === 'query')\n const headerParams = parameters.filter((p) => p.in === 'header')\n\n return (\n <div className={containerStyle}>\n {/* Description */}\n {description && (\n <div className={sectionStyle}>\n <MarkdownRenderer content={description} />\n </div>\n )}\n\n {/* Security */}\n {security && security.length > 0 && (\n <div className={sectionStyle}>\n <h4 className={sectionTitleStyle}>Security</h4>\n <div className={securityListStyle}>\n {security.map((schemes, idx) => (\n <div key={idx} className={securityRowStyle}>\n {schemes.map((scheme) => (\n <span key={scheme} className={securityBadgeStyle}>\n <Icon name=\"lock\" size=\"0.625rem\" strokeWidth={2.5} />\n {scheme}\n </span>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Path Parameters */}\n <ParamSection title=\"Path Parameters\" params={pathParams} />\n\n {/* Query Parameters */}\n <ParamSection title=\"Query Parameters\" params={queryParams} />\n\n {/* Header Parameters */}\n <ParamSection title=\"Header Parameters\" params={headerParams} />\n\n {/* Request Body */}\n {requestBody && (\n <div className={sectionStyle}>\n <div className={schemaHeaderRowStyle}>\n <h4 className={sectionTitleStyle}>Request Body</h4>\n {requestBody.required && (\n <span className={requiredTagStyle}>Required</span>\n )}\n </div>\n {Object.entries(requestBody.content).map(([contentType, media]) => (\n <div key={contentType}>\n <code className={contentTypeBadgeStyle}>{contentType}</code>\n {media.schema && (\n <SchemaTree nodes={schemaToNodes(media.schema)} context=\"request\" />\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Responses */}\n {responses.length > 0 && (\n <div className={sectionStyle}>\n <div className={responsesHeaderRowStyle}>\n <h4 className={sectionTitleStyle}>Responses</h4>\n <div className={statusPillsRowStyle}>\n {responses.map((r) => (\n <span\n key={r.statusCode}\n className={cx(\n statusPillStyle,\n css({\n color: getStatusColor(r.statusCode),\n backgroundColor: getStatusBg(r.statusCode),\n }),\n )}\n >\n {r.statusCode}\n </span>\n ))}\n </div>\n </div>\n <div className={responseListStyle}>\n {responses.map((r) => (\n <ResponseCard key={r.statusCode} response={r} />\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst containerStyle = css({\n display: 'flex',\n flexDirection: 'column',\n})\n\nconst sectionStyle = css({\n marginBottom: '1.5rem',\n})\n\nconst sectionTitleStyle = css({\n margin: '0 0 0.75rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst sectionLabelStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst securityListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.375rem',\n})\n\nconst securityRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n flexWrap: 'wrap',\n})\n\nconst securityBadgeStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.3125rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.1875rem 0.625rem',\n borderRadius: '0.25rem',\n fontWeight: 500,\n})\n\nconst schemaHeaderRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n marginBottom: '0.5rem',\n flexWrap: 'wrap',\n})\n\nconst contentTypeBadgeStyle = css({\n display: 'inline-block',\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n})\n\nconst requiredTagStyle = css({\n fontSize: 'var(--omnispec-font-size-xxs)',\n fontWeight: 600,\n color: 'var(--omnispec-color-error)',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n})\n\nconst responsesHeaderRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n marginBottom: '0.75rem',\n flexWrap: 'wrap',\n})\n\nconst statusPillsRowStyle = css({\n display: 'flex',\n gap: '0.375rem',\n flexWrap: 'wrap',\n})\n\nconst statusPillStyle = css({\n display: 'inline-block',\n fontFamily: 'var(--omnispec-font-mono)',\n fontWeight: 700,\n fontSize: 'var(--omnispec-font-size-xs)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n})\n\nconst responseListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n})\n\nconst responseCardStyle = css({\n borderRadius: 'var(--omnispec-border-radius)',\n overflow: 'hidden',\n})\n\nconst responseCardHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 0.75rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n textAlign: 'left',\n color: 'inherit',\n})\n\n// Static (non-expandable) response row. The extra left inset (chevron width +\n// gap) keeps its status pill aligned with the expandable rows above/below it.\nconst responseCardStaticHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 0.75rem 0.625rem 2.125rem',\n color: 'inherit',\n})\n\nconst chevronStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n transition: 'transform 0.15s ease',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst responseDescStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n flex: 1,\n})\n\nconst responseBodyStyle = css({\n padding: '0 0.75rem 0.75rem',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { TryItRequest } from '../../types/try-it.types'\n\nexport function generateCurl(request: TryItRequest, serverUrl: string): string {\n const parts: string[] = ['curl']\n\n // Method\n if (request.method.toUpperCase() !== 'GET') {\n parts.push(`-X ${request.method.toUpperCase()}`)\n }\n\n // Build URL\n let url = serverUrl + request.url\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n\n // Query params\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) params.append(key, v)\n } else {\n params.set(key, value)\n }\n }\n url += `?${params.toString()}`\n }\n\n parts.push(`'${url}'`)\n\n // Headers\n for (const [key, value] of Object.entries(request.headers)) {\n parts.push(`-H '${key}: ${value}'`)\n }\n\n // Multipart body — one -F per form part (curl sets the boundary itself).\n if (request.body && typeof request.body !== 'string') {\n request.body.forEach((value, key) => {\n if (typeof value === 'string') {\n parts.push(`-F '${key}=${value.replace(/'/g, \"'\\\\''\")}'`)\n } else {\n // File part — reference the local file with @.\n parts.push(`-F '${key}=@${value.name || 'file'}'`)\n }\n })\n return parts.join(' \\\\\\n ')\n }\n\n // Body\n if (request.body && typeof request.body === 'string') {\n if (request.bodyType === 'application/x-www-form-urlencoded') {\n try {\n const parsed = JSON.parse(request.body)\n for (const [key, value] of Object.entries(parsed)) {\n parts.push(`--data-urlencode '${key}=${String(value)}'`)\n }\n } catch {\n const escaped = request.body.replace(/'/g, \"'\\\\''\")\n parts.push(`-d '${escaped}'`)\n }\n } else {\n const escaped = request.body.replace(/'/g, \"'\\\\''\")\n parts.push(`-d '${escaped}'`)\n }\n }\n\n return parts.join(' \\\\\\n ')\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { TryItRequest } from '@core/types/try-it.types'\n\nfunction buildUrl(request: TryItRequest, serverUrl: string): string {\n let url = serverUrl + request.url\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) params.append(key, v)\n } else {\n params.set(key, value)\n }\n }\n url += `?${params.toString()}`\n }\n return url\n}\n\nexport function generateJavaScript(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push(`const response = await fetch('${url}', {`)\n lines.push(` method: '${method}',`)\n\n if (headers.length > 0) {\n lines.push(' headers: {')\n for (const [key, value] of headers) {\n lines.push(` '${key}': '${value}',`)\n }\n lines.push(' },')\n }\n\n if (hasBody) {\n lines.push(` body: JSON.stringify(${request.body}),`)\n }\n\n lines.push('})')\n lines.push('')\n lines.push('const data = await response.json()')\n lines.push('console.log(data)')\n\n return lines.join('\\n')\n}\n\nexport function generatePython(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toLowerCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push('import requests')\n lines.push('')\n\n if (headers.length > 0) {\n lines.push('headers = {')\n for (const [key, value] of headers) {\n lines.push(` '${key}': '${value}',`)\n }\n lines.push('}')\n lines.push('')\n }\n\n if (hasBody) {\n lines.push(`payload = ${request.body}`)\n lines.push('')\n }\n\n const args: string[] = [`'${url}'`]\n if (headers.length > 0) args.push('headers=headers')\n if (hasBody) args.push('json=payload')\n\n lines.push(`response = requests.${method}(${args.join(', ')})`)\n lines.push('print(response.json())')\n\n return lines.join('\\n')\n}\n\nexport function generateGo(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push('package main')\n lines.push('')\n lines.push('import (')\n lines.push('\\t\"fmt\"')\n lines.push('\\t\"io\"')\n lines.push('\\t\"net/http\"')\n if (hasBody) lines.push('\\t\"strings\"')\n lines.push(')')\n lines.push('')\n lines.push('func main() {')\n\n if (hasBody) {\n lines.push(`\\tbody := strings.NewReader(\\`${request.body}\\`)`)\n lines.push(`\\treq, err := http.NewRequest(\"${method}\", \"${url}\", body)`)\n } else {\n lines.push(`\\treq, err := http.NewRequest(\"${method}\", \"${url}\", nil)`)\n }\n lines.push('\\tif err != nil {')\n lines.push('\\t\\tpanic(err)')\n lines.push('\\t}')\n\n for (const [key, value] of headers) {\n lines.push(`\\treq.Header.Set(\"${key}\", \"${value}\")`)\n }\n\n lines.push('')\n lines.push('\\tresp, err := http.DefaultClient.Do(req)')\n lines.push('\\tif err != nil {')\n lines.push('\\t\\tpanic(err)')\n lines.push('\\t}')\n lines.push('\\tdefer resp.Body.Close()')\n lines.push('')\n lines.push('\\tresBody, _ := io.ReadAll(resp.Body)')\n lines.push('\\tfmt.Println(string(resBody))')\n lines.push('}')\n\n return lines.join('\\n')\n}\n\nexport function generateJava(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n\n const lines: string[] = []\n lines.push('import java.net.URI;')\n lines.push('import java.net.http.HttpClient;')\n lines.push('import java.net.http.HttpRequest;')\n lines.push('import java.net.http.HttpResponse;')\n lines.push('')\n lines.push('HttpClient client = HttpClient.newHttpClient();')\n\n if (hasBody) {\n lines.push('')\n lines.push('String body = \"\"\"')\n lines.push(` ${request.body}\"\"\";`)\n }\n\n lines.push('')\n lines.push('HttpRequest request = HttpRequest.newBuilder()')\n lines.push(` .uri(URI.create(\"${url}\"))`)\n\n if (hasBody) {\n lines.push(` .method(\"${method}\", HttpRequest.BodyPublishers.ofString(body))`)\n } else if (method !== 'GET') {\n lines.push(` .method(\"${method}\", HttpRequest.BodyPublishers.noBody())`)\n }\n\n for (const [key, value] of headers) {\n lines.push(` .header(\"${key}\", \"${value}\")`)\n }\n\n lines.push(' .build();')\n lines.push('')\n lines.push('HttpResponse<String> response = client.send(')\n lines.push(' request, HttpResponse.BodyHandlers.ofString());')\n lines.push('System.out.println(response.body());')\n\n return lines.join('\\n')\n}\n\nexport function generateCSharp(request: TryItRequest, serverUrl: string): string {\n const url = buildUrl(request, serverUrl)\n const method = request.method.toUpperCase()\n const headers = Object.entries(request.headers)\n const hasBody = request.body && typeof request.body === 'string'\n const contentType = request.headers['Content-Type'] ?? 'application/json'\n\n const lines: string[] = []\n lines.push('using var client = new HttpClient();')\n lines.push('')\n\n if (hasBody) {\n lines.push('var content = new StringContent(')\n lines.push(` @\"${(request.body as string).replace(/\"/g, '\"\"')}\",`)\n lines.push(' System.Text.Encoding.UTF8,')\n lines.push(` \"${contentType}\");`)\n lines.push('')\n }\n\n const nonContentHeaders = headers.filter(([k]) => k !== 'Content-Type')\n for (const [key, value] of nonContentHeaders) {\n lines.push(`client.DefaultRequestHeaders.Add(\"${key}\", \"${value}\");`)\n }\n if (nonContentHeaders.length > 0) lines.push('')\n\n const methodMap: Record<string, string> = {\n GET: 'GetAsync',\n POST: 'PostAsync',\n PUT: 'PutAsync',\n DELETE: 'DeleteAsync',\n PATCH: 'PatchAsync',\n }\n\n const asyncMethod = methodMap[method] ?? 'SendAsync'\n\n if (hasBody && (method === 'POST' || method === 'PUT' || method === 'PATCH')) {\n lines.push(`var response = await client.${asyncMethod}(\"${url}\", content);`)\n } else if (method === 'GET' || method === 'DELETE') {\n lines.push(`var response = await client.${asyncMethod}(\"${url}\");`)\n } else {\n lines.push(`var request = new HttpRequestMessage(HttpMethod.${method.charAt(0) + method.slice(1).toLowerCase()}, \"${url}\");`)\n if (hasBody) lines.push('request.Content = content;')\n lines.push('var response = await client.SendAsync(request);')\n }\n\n lines.push('var body = await response.Content.ReadAsStringAsync();')\n lines.push('Console.WriteLine(body);')\n\n return lines.join('\\n')\n}\n\nexport type CodeLanguageId = 'curl' | 'javascript' | 'python' | 'go' | 'java' | 'csharp'\n\nexport interface CodeLanguageOption {\n id: CodeLanguageId\n label: string\n prismLanguage: string\n}\n\nexport const CODE_LANGUAGES: CodeLanguageOption[] = [\n { id: 'curl', label: 'cURL', prismLanguage: 'bash' },\n { id: 'javascript', label: 'JavaScript', prismLanguage: 'javascript' },\n { id: 'python', label: 'Python', prismLanguage: 'python' },\n { id: 'go', label: 'Go', prismLanguage: 'go' },\n { id: 'java', label: 'Java', prismLanguage: 'java' },\n { id: 'csharp', label: 'C#', prismLanguage: 'csharp' },\n]\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useMemo, useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { TryItRequest } from '@core/types/try-it.types'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport type { CodeLanguage } from '@core/components/CodeBlock/CodeBlock'\nimport { generateCurl } from '@core/components/TryIt/curl-generator'\nimport {\n generateJavaScript,\n generatePython,\n generateGo,\n generateJava,\n generateCSharp,\n CODE_LANGUAGES,\n} from '@core/components/TryIt/code-generators'\nimport type { CodeLanguageId } from '@core/components/TryIt/code-generators'\nimport { generateExample } from '@core/components/SchemaViewer/schema-utils'\nimport { ExampleSelector, getNamedExamples } from '@core/components/common/ExampleSelector'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface ResponseSample {\n statusCode: string\n description: string\n content?: Record<string, {\n schema?: Record<string, unknown>\n example?: unknown\n examples?: Record<string, { value: unknown }>\n }>\n}\n\nexport interface SamplesPanelProps {\n method: string\n path: string\n serverUrl: string\n operationId: string\n requestBodySchema?: Record<string, unknown>\n requestBodyContentType?: string\n responses: ResponseSample[]\n onPropertyClick?: (propertyPath: string) => void\n}\n\n// ---------------------------------------------------------------------------\n// Code generators map\n// ---------------------------------------------------------------------------\n\nconst generators: Record<CodeLanguageId, (req: TryItRequest, url: string) => string> = {\n curl: generateCurl,\n javascript: generateJavaScript,\n python: generatePython,\n go: generateGo,\n java: generateJava,\n csharp: generateCSharp,\n}\n\n// ---------------------------------------------------------------------------\n// Status-code colour helpers\n// ---------------------------------------------------------------------------\n\nfunction getStatusColor(statusCode: string): string {\n const code = parseInt(statusCode, 10)\n if (code >= 200 && code < 300) return 'var(--omnispec-color-success)'\n if (code >= 400 && code < 500) return 'var(--omnispec-color-warning)'\n if (code >= 500) return 'var(--omnispec-color-error)'\n return 'var(--omnispec-fg-muted)'\n}\n\nfunction getStatusBg(statusCode: string): string {\n const code = parseInt(statusCode, 10)\n if (code >= 200 && code < 300) return 'rgba(26, 127, 55, 0.15)'\n if (code >= 400 && code < 500) return 'rgba(191, 135, 0, 0.15)'\n if (code >= 500) return 'rgba(207, 34, 46, 0.15)'\n return 'var(--omnispec-bg-secondary)'\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function SamplesPanel({\n method,\n path,\n serverUrl,\n requestBodySchema,\n requestBodyContentType = 'application/json',\n responses,\n}: SamplesPanelProps) {\n const [selectedLang, setSelectedLang] = useState<CodeLanguageId>('curl')\n const [selectedResponseIndex, setSelectedResponseIndex] = useState(0)\n const [selectedExampleName, setSelectedExampleName] = useState<string>('')\n\n // Build a minimal TryItRequest from props so we can feed it to generators\n const request = useMemo<TryItRequest>(() => {\n const headers: Record<string, string> = {}\n const hasBody = requestBodySchema && ['post', 'put', 'patch', 'delete'].includes(method.toLowerCase())\n\n if (hasBody) {\n headers['Content-Type'] = requestBodyContentType\n }\n\n const body = hasBody\n ? JSON.stringify(generateExample(requestBodySchema!), null, 2)\n : undefined\n\n return {\n url: path,\n method: method.toUpperCase(),\n headers,\n queryParams: {},\n pathParams: {},\n body,\n }\n }, [method, path, requestBodySchema, requestBodyContentType])\n\n // Generated code for the selected language\n const requestCode = useMemo(() => {\n const generator = generators[selectedLang]\n return generator ? generator(request, serverUrl) : ''\n }, [request, serverUrl, selectedLang])\n\n const langOption = CODE_LANGUAGES.find((l) => l.id === selectedLang)\n const prismLang = (langOption?.prismLanguage ?? 'text') as CodeLanguage\n\n // Response data for the selected tab\n const activeResponse = responses[selectedResponseIndex] ?? null\n\n const { namedExamples, responseContentType } = useMemo(() => {\n if (!activeResponse?.content) return { namedExamples: [], responseContentType: null }\n const firstContentType = Object.keys(activeResponse.content)[0]\n const firstMedia = activeResponse.content[firstContentType]\n if (!firstMedia) return { namedExamples: [], responseContentType: firstContentType }\n\n const examples = getNamedExamples(firstMedia as { example?: unknown; examples?: Record<string, { summary?: string; value: unknown }> })\n if (examples.length === 0 && firstMedia.schema) {\n return {\n namedExamples: [{ name: 'generated', value: generateExample(firstMedia.schema as Record<string, unknown>) }],\n responseContentType: firstContentType,\n }\n }\n return { namedExamples: examples, responseContentType: firstContentType }\n }, [activeResponse])\n\n const responseExampleCode = useMemo(() => {\n if (namedExamples.length === 0) return null\n const target = selectedExampleName\n ? namedExamples.find((ex) => ex.name === selectedExampleName)\n : namedExamples[0]\n const value = target?.value ?? namedExamples[0]?.value ?? null\n if (value === null) return null\n return typeof value === 'string' ? value : JSON.stringify(value, null, 2)\n }, [namedExamples, selectedExampleName])\n\n // Language tab bar rendered into CodeBlock headerLeft\n const languageTabs = (\n <div className={languageBarStyle}>\n {CODE_LANGUAGES.map((lang) => (\n <button\n key={lang.id}\n type=\"button\"\n onClick={() => setSelectedLang(lang.id)}\n className={cx(langBtnStyle, selectedLang === lang.id && langBtnActiveStyle)}\n >\n {lang.label}\n </button>\n ))}\n </div>\n )\n\n return (\n <div className={panelStyle}>\n {/* ------------------------------------------------------------------ */}\n {/* Request Samples */}\n {/* ------------------------------------------------------------------ */}\n <div className={sectionStyle}>\n <div className={sectionHeaderStyle}>\n <span className={sectionTitleStyle}>Request samples</span>\n {requestBodyContentType && (\n <code className={contentTypeBadgeStyle}>{requestBodyContentType}</code>\n )}\n </div>\n\n <CodeBlock\n code={requestCode}\n language={prismLang}\n showCopy={true}\n headerLeft={languageTabs}\n />\n </div>\n\n {/* ------------------------------------------------------------------ */}\n {/* Response Samples */}\n {/* ------------------------------------------------------------------ */}\n {responses.length > 0 && (\n <div className={sectionStyle}>\n <div className={sectionHeaderStyle}>\n <span className={sectionTitleStyle}>Response samples</span>\n </div>\n\n {/* Status code tab pills */}\n <div className={statusTabsStyle}>\n {responses.map((res, idx) => {\n const color = getStatusColor(res.statusCode)\n const bg = getStatusBg(res.statusCode)\n const isActive = idx === selectedResponseIndex\n\n return (\n <button\n key={res.statusCode}\n type=\"button\"\n onClick={() => {\n setSelectedResponseIndex(idx); setSelectedExampleName('')\n }}\n className={cx(statusTabStyle, isActive && statusTabActiveStyle)}\n style={\n {\n '--status-color': color,\n '--status-bg': bg,\n } as React.CSSProperties\n }\n title={res.description}\n >\n {res.statusCode}\n </button>\n )\n })}\n </div>\n\n {/* Response code block */}\n {responseExampleCode !== null ? (\n <div>\n <div className={contentTypeLabelStyle}>\n <code className={contentTypeBadgeStyle}>{responseContentType}</code>\n </div>\n {namedExamples.length > 1 && (\n <ExampleSelector\n examples={namedExamples}\n selectedName={selectedExampleName || namedExamples[0]?.name}\n onSelect={setSelectedExampleName}\n />\n )}\n <CodeBlock\n code={responseExampleCode}\n language=\"json\"\n showCopy={true}\n />\n </div>\n ) : (\n <div className={emptyStateStyle}>No response sample available.</div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst panelStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1.5rem',\n})\n\nconst sectionStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n})\n\nconst sectionHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n flexWrap: 'wrap',\n})\n\nconst sectionTitleStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n [mq.desktop]: {\n fontSize: 'var(--omnispec-font-size-base)',\n },\n})\n\nconst contentTypeBadgeStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n padding: '0.125rem 0.375rem',\n borderRadius: 'var(--omnispec-border-radius)',\n})\n\nconst languageBarStyle = css({\n display: 'flex',\n gap: '0.125rem',\n overflowX: 'auto',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n})\n\nconst langBtnStyle = css({\n padding: '0.25rem 0.5rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 500,\n color: 'var(--omnispec-fg-muted)',\n whiteSpace: 'nowrap',\n borderRadius: 'var(--omnispec-border-radius)',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst langBtnActiveStyle = css({\n color: 'var(--omnispec-color-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n fontWeight: 600,\n})\n\nconst statusTabsStyle = css({\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0.375rem',\n})\n\n// Status tabs use CSS custom properties set via inline style so each tab\n// can carry its own colour without a unique class per status code.\nconst statusTabStyle = css({\n padding: '0.25rem 0.625rem',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 600,\n fontFamily: 'var(--omnispec-font-mono)',\n opacity: 0.65,\n backgroundColor: 'var(--status-bg)',\n color: 'var(--status-color)',\n transition: 'opacity 0.15s, box-shadow 0.15s',\n '&:hover': {\n opacity: 0.85,\n },\n})\n\nconst statusTabActiveStyle = css({\n opacity: 1,\n boxShadow: '0 0 0 1px var(--status-color)',\n})\n\nconst contentTypeLabelStyle = css({\n marginBottom: '0.25rem',\n})\n\nconst emptyStateStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-muted)',\n padding: '0.75rem 0',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport { css } from '@core/styles/css'\nimport { Icon } from './Icon'\n\ninterface LinkableHeadingProps {\n id: string\n as?: 'h2' | 'h3' | 'h4' | 'h5'\n className?: string\n children: ReactNode\n}\n\nexport function LinkableHeading({ id, as: Tag = 'h3', className, children }: LinkableHeadingProps) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = useCallback((e: React.MouseEvent) => {\n e.preventDefault()\n const url = `${window.location.origin}${window.location.pathname}#${id}`\n navigator.clipboard.writeText(url).then(() => {\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n })\n }, [id])\n\n return (\n <Tag id={id} className={`${containerStyle} ${className ?? ''}`}>\n {children}\n <a\n href={`#${id}`}\n onClick={handleCopy}\n className={linkIconStyle}\n aria-label=\"Copy link to section\"\n title={copied ? 'Copied!' : 'Copy link'}\n >\n <Icon name=\"link\" size=\"0.75em\" />\n </a>\n </Tag>\n )\n}\n\nconst containerStyle = css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n '&:hover a': {\n opacity: 1,\n },\n})\n\nconst linkIconStyle = css({\n opacity: 0,\n color: 'var(--omnispec-fg-muted)',\n transition: 'opacity 0.15s',\n flexShrink: 0,\n lineHeight: 1,\n textDecoration: 'none',\n '&:hover': {\n color: 'var(--omnispec-color-primary)',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useEffect } from 'react'\nimport type { ReactNode } from 'react'\nimport { css } from '../../styles/css'\n\ninterface ModalProps {\n open: boolean\n onClose: () => void\n title?: string\n children: ReactNode\n}\n\nexport function Modal({ open, onClose, title, children }: ModalProps) {\n useEffect(() => {\n if (!open) return undefined\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n document.addEventListener('keydown', handleKey)\n document.body.style.overflow = 'hidden'\n return () => {\n document.removeEventListener('keydown', handleKey)\n document.body.style.overflow = ''\n }\n }, [open, onClose])\n\n if (!open) return null\n\n return (\n <>\n <div\n className={backdropStyle}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n <div\n className={dialogStyle}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n >\n <div className={headerStyle}>\n {title && <h3 className={titleStyle}>{title}</h3>}\n <button\n type=\"button\"\n onClick={onClose}\n className={closeBtnStyle}\n aria-label=\"Close\"\n >\n ×\n </button>\n </div>\n <div className={bodyStyle}>\n {children}\n </div>\n </div>\n </>\n )\n}\n\nconst backdropStyle = css({\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 1100,\n})\n\nconst dialogStyle = css({\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxWidth: '768px',\n maxHeight: '85vh',\n backgroundColor: 'var(--omnispec-bg-primary)',\n borderRadius: '12px',\n boxShadow: '0 20px 60px rgba(0, 0, 0, 0.2)',\n zIndex: 1101,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n})\n\nconst headerStyle = css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '16px 20px',\n borderBottom: '1px solid var(--omnispec-border-color)',\n})\n\nconst titleStyle = css({\n margin: 0,\n fontSize: 'var(--omnispec-h3-font-size)',\n fontWeight: 600,\n color: 'var(--omnispec-color-primary)',\n})\n\nconst closeBtnStyle = css({\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n lineHeight: 1,\n color: 'var(--omnispec-fg-muted)',\n padding: '4px 8px',\n borderRadius: '4px',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst bodyStyle = css({\n padding: '20px',\n overflowY: 'auto',\n flex: 1,\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\n/**\n * Try-It input persistence.\n *\n * Non-sensitive form state (parameter values, request body, content type,\n * custom headers) is persisted to localStorage, namespaced per spec and\n * operation, so it survives navigation and reloads. Auth tokens are NOT\n * stored here — they live in sessionStorage only (see AuthContext).\n */\n\nexport interface PersistedTryItState {\n paramValues?: Record<string, string>\n body?: string\n contentType?: string\n /** Text-only form field values (files are never persisted). */\n formFields?: Record<string, string>\n /** Custom user-added headers. */\n customHeaders?: Array<{ name: string; value: string }>\n}\n\nconst PREFIX = 'omnispec:tryit'\n\n/** Storage envelope: state plus the epoch-ms timestamp it was saved at. */\ninterface PersistedEnvelope {\n savedAt: number\n state: PersistedTryItState\n}\n\nfunction storageKey(specKey: string, operationKey: string): string {\n return `${PREFIX}:${specKey}:${operationKey}`\n}\n\nfunction isEnvelope(value: unknown): value is PersistedEnvelope {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as PersistedEnvelope).savedAt === 'number' &&\n typeof (value as PersistedEnvelope).state === 'object' &&\n (value as PersistedEnvelope).state !== null\n )\n}\n\nfunction getStorage(): Storage | null {\n try {\n if (typeof window === 'undefined' || !window.localStorage) return null\n // Validate the API surface — some environments expose a stub object.\n if (typeof window.localStorage.setItem !== 'function' || typeof window.localStorage.getItem !== 'function') {\n return null\n }\n return window.localStorage\n } catch {\n // Access can throw in sandboxed iframes / privacy modes.\n return null\n }\n}\n\n/**\n * Loads persisted Try-It state.\n *\n * `ttlSeconds` bounds the age of restored entries: entries older than the TTL\n * (and legacy entries with no timestamp, whose age is unknowable) are removed\n * and treated as absent. `0` disables persistence — nothing is restored.\n * `undefined` means no expiration.\n */\nexport function loadTryItState(\n specKey: string | undefined,\n operationKey: string,\n ttlSeconds?: number,\n): PersistedTryItState | null {\n if (!specKey) return null\n if (ttlSeconds === 0) return null\n const storage = getStorage()\n if (!storage) return null\n const key = storageKey(specKey, operationKey)\n try {\n const raw = storage.getItem(key)\n if (!raw) return null\n const parsed: unknown = JSON.parse(raw)\n if (isEnvelope(parsed)) {\n if (ttlSeconds !== undefined && Date.now() - parsed.savedAt > ttlSeconds * 1000) {\n storage.removeItem(key)\n return null\n }\n return parsed.state\n }\n // Legacy bare-state entry (pre-envelope format, no timestamp).\n if (parsed && typeof parsed === 'object') {\n if (ttlSeconds !== undefined) {\n // Age unknown — with a TTL configured, err on the side of expiry.\n storage.removeItem(key)\n return null\n }\n return parsed as PersistedTryItState\n }\n return null\n } catch {\n return null\n }\n}\n\nexport function saveTryItState(\n specKey: string | undefined,\n operationKey: string,\n state: PersistedTryItState,\n): void {\n if (!specKey) return\n const storage = getStorage()\n if (!storage) return\n try {\n const envelope: PersistedEnvelope = { savedAt: Date.now(), state }\n storage.setItem(storageKey(specKey, operationKey), JSON.stringify(envelope))\n } catch {\n // Quota exceeded or storage disabled — persistence is best-effort.\n }\n}\n\nconst PANEL_WIDTH_KEY = `${PREFIX}:panel-width`\n\n/** Loads the persisted Try-It panel width in pixels (global, not per operation). */\nexport function loadPanelWidth(): number | null {\n const storage = getStorage()\n if (!storage) return null\n try {\n const raw = storage.getItem(PANEL_WIDTH_KEY)\n if (!raw) return null\n const value = Number(raw)\n return Number.isFinite(value) && value > 0 ? value : null\n } catch {\n return null\n }\n}\n\n/** Persists the Try-It panel width in pixels. */\nexport function savePanelWidth(width: number): void {\n const storage = getStorage()\n if (!storage) return\n try {\n storage.setItem(PANEL_WIDTH_KEY, String(Math.round(width)))\n } catch {\n // Best-effort.\n }\n}\n\nexport function clearTryItState(specKey: string | undefined, operationKey: string): void {\n if (!specKey) return\n const storage = getStorage()\n if (!storage) return\n try {\n storage.removeItem(storageKey(specKey, operationKey))\n } catch {\n // Best-effort.\n }\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useRef, useState } from 'react'\nimport type { CSSProperties, PointerEvent as ReactPointerEvent } from 'react'\nimport { css } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport { loadPanelWidth, savePanelWidth } from '@core/utils/tryit-storage'\n\ninterface ResponsiveColumnsProps {\n left: React.ReactNode\n right?: React.ReactNode\n rightLabel?: string\n}\n\n/** Resize bounds for the right (Try-It) column. */\nconst MIN_RIGHT_WIDTH = 320\nconst MAX_RIGHT_FRACTION = 0.65\n\nconst singleColumnStyle = css({\n padding: '0.75rem 0',\n minWidth: 0,\n [mq.desktop]: {\n padding: '1rem 1.25rem',\n },\n})\n\nconst gridStyle = css({\n maxWidth: '100%',\n [mq.desktop]: {\n display: 'grid',\n // The custom property is set inline while a user-chosen width is active;\n // it falls back to a 65/35 split (content-heavy left, Try-It on the right).\n gridTemplateColumns: '1fr 0.375rem var(--omnispec-tryit-col, calc(35% - 0.375rem))',\n },\n})\n\nconst leftColumnStyle = css({\n padding: '0.75rem 0',\n minWidth: 0,\n [mq.desktop]: {\n padding: '1rem 1.25rem',\n },\n})\n\nconst toggleButtonStyle = css({\n display: 'block',\n width: '100%',\n padding: '10px 16px',\n marginTop: '12px',\n borderRadius: 'var(--omnispec-border-radius)',\n background: 'var(--omnispec-color-primary, #1a1a2e)',\n color: '#fff',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-base)',\n fontWeight: 500,\n textAlign: 'center',\n [mq.desktop]: {\n display: 'none',\n },\n})\n\nconst rightColumnStyle = css({\n padding: '0.75rem 0',\n background: 'var(--omnispec-bg-secondary)',\n minWidth: 0,\n display: 'none',\n '&[data-mobile-visible]': {\n display: 'block',\n borderTop: '1px solid var(--omnispec-border-color)',\n },\n [mq.desktop]: {\n display: 'block',\n padding: '1rem 1.25rem',\n borderTop: 'none',\n },\n})\n\nconst resizeHandleStyle = css({\n display: 'none',\n [mq.desktop]: {\n display: 'block',\n cursor: 'col-resize',\n backgroundColor: 'var(--omnispec-border-color)',\n borderRadius: '0.1875rem',\n transition: 'background-color 0.15s ease',\n marginTop: '1rem',\n marginBottom: '1rem',\n '&:hover, &[data-dragging]': {\n backgroundColor: 'var(--omnispec-color-primary)',\n },\n },\n})\n\nconst draggingContainerStyle = css({\n userSelect: 'none',\n})\n\nexport function ResponsiveColumns({ left, right, rightLabel = 'Try It' }: ResponsiveColumnsProps) {\n const [showRight, setShowRight] = useState(false)\n const [rightWidth, setRightWidth] = useState<number | null>(() => loadPanelWidth())\n const [dragging, setDragging] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n const startDrag = (e: ReactPointerEvent<HTMLDivElement>) => {\n e.preventDefault()\n setDragging(true)\n\n const onMove = (ev: PointerEvent) => {\n const rect = containerRef.current?.getBoundingClientRect()\n if (!rect) return\n const raw = rect.right - ev.clientX\n const max = rect.width * MAX_RIGHT_FRACTION\n setRightWidth(Math.min(max, Math.max(MIN_RIGHT_WIDTH, raw)))\n }\n const onUp = () => {\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n setDragging(false)\n setRightWidth((width) => {\n if (width !== null) savePanelWidth(width)\n return width\n })\n }\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n }\n\n if (!right) {\n return (\n <div className={singleColumnStyle}>\n {left}\n </div>\n )\n }\n\n const containerStyle: CSSProperties | undefined = rightWidth !== null\n ? ({ '--omnispec-tryit-col': `${rightWidth}px` } as CSSProperties)\n : undefined\n\n return (\n <div\n ref={containerRef}\n className={`${gridStyle} ${dragging ? draggingContainerStyle : ''}`}\n style={containerStyle}\n >\n <div className={leftColumnStyle}>\n {left}\n <button\n type=\"button\"\n className={toggleButtonStyle}\n onClick={() => setShowRight((prev) => !prev)}\n >\n {showRight ? 'Hide' : rightLabel}\n </button>\n </div>\n <div\n className={resizeHandleStyle}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={`Resize ${rightLabel} panel`}\n onPointerDown={startDrag}\n {...(dragging ? { 'data-dragging': '' } : {})}\n />\n <div\n className={rightColumnStyle}\n {...(showRight ? { 'data-mobile-visible': '' } : {})}\n >\n {right}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { ProxyRequest, ProxyResponse, TryItRequest, TryItResponse } from '../types/try-it.types'\n\nexport async function sendProxiedRequest(\n proxyUrl: string,\n request: TryItRequest,\n /**\n * Headers attached to the request the BROWSER sends TO the proxy\n * endpoint — not to the upstream target. Use for custom auth /\n * referer guards on the consumer's own backend. `Content-Type` is\n * always set; anything here takes precedence.\n */\n proxyHeaders?: Record<string, string>,\n): Promise<TryItResponse> {\n const targetUrl = buildTargetUrl(request)\n\n const proxyPayload: ProxyRequest = {\n url: targetUrl,\n method: request.method,\n headers: request.headers,\n timeout: 30000,\n }\n\n if (request.body) {\n if (typeof request.body === 'string') {\n proxyPayload.body = request.body\n proxyPayload.bodyEncoding = 'utf-8'\n } else {\n // FormData: encode the real multipart payload (with boundary) and ship\n // it base64 inside the JSON envelope. The proxy decodes it back to bytes\n // and forwards it unchanged, so file uploads survive the round trip.\n const { body, contentType } = await encodeMultipartBody(request.body)\n proxyPayload.body = body\n proxyPayload.bodyEncoding = 'base64'\n proxyPayload.headers = { ...proxyPayload.headers, 'Content-Type': contentType }\n }\n }\n\n const startTime = performance.now()\n\n const response = await fetch(proxyUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...proxyHeaders },\n body: JSON.stringify(proxyPayload),\n })\n\n if (!response.ok) {\n throw new Error(`Proxy request failed: ${response.status} ${response.statusText}`)\n }\n\n const proxyResponse: ProxyResponse = await response.json()\n const duration = performance.now() - startTime\n\n return {\n status: proxyResponse.status,\n statusText: proxyResponse.statusText,\n headers: proxyResponse.headers,\n body: proxyResponse.body,\n bodyEncoding: proxyResponse.bodyEncoding ?? 'utf-8',\n contentType: proxyResponse.headers['content-type'] ?? 'text/plain',\n duration: proxyResponse.duration ?? duration,\n }\n}\n\n/**\n * Serializes a FormData instance to its real `multipart/form-data` wire format\n * (including the boundary) and returns it base64-encoded, plus the exact\n * Content-Type header (with boundary) to forward. Manual serialization keeps\n * behavior identical across browsers, jsdom, and Node.\n */\n/** Reads a Blob/File into bytes, falling back to FileReader where Blob.arrayBuffer is unavailable. */\nasync function blobToBytes(value: Blob): Promise<Uint8Array> {\n if (typeof value.arrayBuffer === 'function') {\n return new Uint8Array(await value.arrayBuffer())\n }\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => resolve(new Uint8Array(reader.result as ArrayBuffer))\n reader.onerror = () => reject(reader.error)\n reader.readAsArrayBuffer(value)\n })\n}\n\nasync function encodeMultipartBody(formData: FormData): Promise<{ body: string; contentType: string }> {\n const boundary = `----omnispec${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`\n const encoder = new TextEncoder()\n const chunks: Uint8Array[] = []\n const push = (s: string) => chunks.push(encoder.encode(s))\n\n const entries: Array<[string, FormDataEntryValue]> = []\n formData.forEach((value, key) => entries.push([key, value]))\n\n for (const [key, value] of entries) {\n push(`--${boundary}\\r\\n`)\n if (typeof value === 'string') {\n push(`Content-Disposition: form-data; name=\"${key}\"\\r\\n\\r\\n`)\n push(`${value}\\r\\n`)\n } else {\n const filename = value.name || 'file'\n const fileType = value.type || 'application/octet-stream'\n push(`Content-Disposition: form-data; name=\"${key}\"; filename=\"${filename}\"\\r\\n`)\n push(`Content-Type: ${fileType}\\r\\n\\r\\n`)\n chunks.push(await blobToBytes(value))\n push('\\r\\n')\n }\n }\n push(`--${boundary}--\\r\\n`)\n\n const total = chunks.reduce((n, c) => n + c.length, 0)\n const bytes = new Uint8Array(total)\n let offset = 0\n for (const c of chunks) {\n bytes.set(c, offset)\n offset += c.length\n }\n\n // Convert to base64 in chunks to avoid call-stack limits on large files.\n let binary = ''\n const CHUNK = 0x8000\n for (let i = 0; i < bytes.length; i += CHUNK) {\n binary += String.fromCharCode(...bytes.subarray(i, i + CHUNK))\n }\n return { body: btoa(binary), contentType: `multipart/form-data; boundary=${boundary}` }\n}\n\nfunction buildTargetUrl(request: TryItRequest): string {\n let url = request.url\n\n // Replace path parameters\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n\n // Add query parameters\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) {\n params.append(key, v)\n }\n } else {\n params.set(key, value)\n }\n }\n const separator = url.includes('?') ? '&' : '?'\n url = `${url}${separator}${params.toString()}`\n }\n\n return url\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { TryItRequest, TryItResponse } from '../types/try-it.types'\nimport { isBinaryContentType, bytesToBase64 } from './binary-response'\n\nexport async function sendDirectRequest(\n request: TryItRequest,\n): Promise<TryItResponse> {\n const url = upgradeMixedContent(buildTargetUrl(request))\n\n const init: RequestInit = {\n method: request.method,\n headers: request.headers,\n }\n\n if (request.body) {\n init.body = typeof request.body === 'string' ? request.body : request.body\n }\n\n const startTime = performance.now()\n\n const response = await fetch(url, init)\n\n const duration = performance.now() - startTime\n const contentType = response.headers.get('content-type') ?? 'text/plain'\n\n // Binary responses are read as bytes and base64-encoded so the UI can offer\n // a download instead of mangling them through .text().\n let body: string\n let bodyEncoding: 'utf-8' | 'base64' = 'utf-8'\n if (isBinaryContentType(contentType)) {\n body = bytesToBase64(new Uint8Array(await response.arrayBuffer()))\n bodyEncoding = 'base64'\n } else {\n body = await response.text()\n }\n\n const headers: Record<string, string> = {}\n response.headers.forEach((value, key) => {\n headers[key] = value\n })\n\n return {\n status: response.status,\n statusText: response.statusText,\n headers,\n body,\n bodyEncoding,\n contentType,\n duration,\n }\n}\n\n/**\n * Upgrade an `http://` target to `https://` when the page itself is served over\n * https. Browsers block plain-http requests from an https page as mixed content\n * (the fetch never leaves the browser), and many specs still declare a stale\n * `http://` server URL. Only upgrades on secure pages — on an http page a real\n * http-only API (e.g. a local dev server) must still be reachable.\n */\nexport function upgradeMixedContent(url: string): string {\n if (\n typeof window !== 'undefined' &&\n window.location?.protocol === 'https:' &&\n url.startsWith('http://')\n ) {\n return `https://${url.slice('http://'.length)}`\n }\n return url\n}\n\nfunction buildTargetUrl(request: TryItRequest): string {\n let url = request.url\n\n for (const [key, value] of Object.entries(request.pathParams)) {\n url = url.replace(`{${key}}`, encodeURIComponent(value))\n }\n\n const queryEntries = Object.entries(request.queryParams)\n if (queryEntries.length > 0) {\n const params = new URLSearchParams()\n for (const [key, value] of queryEntries) {\n if (Array.isArray(value)) {\n for (const v of value) {\n params.append(key, v)\n }\n } else {\n params.set(key, value)\n }\n }\n const separator = url.includes('?') ? '&' : '?'\n url = `${url}${separator}${params.toString()}`\n }\n\n return url\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useMemo } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport type { TryItRequest } from '@core/types/try-it.types'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport type { CodeLanguage } from '@core/components/CodeBlock/CodeBlock'\nimport { generateCurl } from './curl-generator'\nimport {\n generateJavaScript,\n generatePython,\n generateGo,\n generateJava,\n generateCSharp,\n CODE_LANGUAGES,\n} from './code-generators'\nimport type { CodeLanguageId } from './code-generators'\n\ninterface CodeSamplesProps {\n request: TryItRequest\n serverUrl: string\n selectedLanguage: CodeLanguageId\n onLanguageChange: (lang: CodeLanguageId) => void\n xCodeSamples?: XCodeSample[]\n}\n\nexport interface XCodeSample {\n lang: string\n label?: string\n source: string\n}\n\nconst generators: Record<CodeLanguageId, (req: TryItRequest, url: string) => string> = {\n curl: generateCurl,\n javascript: generateJavaScript,\n python: generatePython,\n go: generateGo,\n java: generateJava,\n csharp: generateCSharp,\n}\n\nexport function CodeSamples({\n request,\n serverUrl,\n selectedLanguage,\n onLanguageChange,\n xCodeSamples,\n}: CodeSamplesProps) {\n const code = useMemo(() => {\n if (xCodeSamples) {\n const custom = xCodeSamples.find(\n (s) => s.lang.toLowerCase() === selectedLanguage || s.label?.toLowerCase() === selectedLanguage,\n )\n if (custom) return custom.source\n }\n const generator = generators[selectedLanguage]\n return generator ? generator(request, serverUrl) : ''\n }, [request, serverUrl, selectedLanguage, xCodeSamples])\n\n const langOption = CODE_LANGUAGES.find((l) => l.id === selectedLanguage)\n const prismLang = langOption?.prismLanguage ?? 'text'\n\n const languageTabs = (\n <div className={languageBarStyle}>\n {CODE_LANGUAGES.map((lang) => (\n <button\n key={lang.id}\n type=\"button\"\n onClick={() => onLanguageChange(lang.id)}\n className={cx(langBtnStyle, selectedLanguage === lang.id && langBtnActiveStyle)}\n >\n {lang.label}\n </button>\n ))}\n </div>\n )\n\n return (\n <div className={containerStyle}>\n <CodeBlock\n code={code}\n language={prismLang as CodeLanguage}\n showCopy={true}\n headerLeft={languageTabs}\n />\n </div>\n )\n}\n\nconst containerStyle = css({\n marginTop: '0.75rem',\n})\n\nconst languageBarStyle = css({\n display: 'flex',\n gap: '0.125rem',\n overflowX: 'auto',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n})\n\nconst langBtnStyle = css({\n padding: '0.25rem 0.5rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 500,\n color: 'var(--omnispec-fg-muted)',\n whiteSpace: 'nowrap',\n borderRadius: 'var(--omnispec-border-radius)',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst langBtnActiveStyle = css({\n color: 'var(--omnispec-color-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n fontWeight: 600,\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { css } from '@core/styles/css'\nimport type { TryItResponse } from '@core/types/try-it.types'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport type { CodeLanguage } from '@core/components/CodeBlock/CodeBlock'\nimport { Tabs } from '@core/components/common/Tabs'\nimport { Button } from '@core/components/common/Button'\nimport { base64ToBlob, filenameForResponse } from '@core/utils/binary-response'\n\ninterface ResponseViewerProps {\n response: TryItResponse | null\n loading?: boolean\n error?: string\n}\n\nconst containerStyle = css({\n marginTop: '12px',\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: 'var(--omnispec-border-radius)',\n padding: '12px',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n})\n\nconst statusBarStyle = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '12px',\n})\n\nconst statusCodeBaseStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontWeight: 700,\n fontSize: 'var(--omnispec-font-size-base)',\n})\n\nconst durationStyle = css({\n color: 'var(--omnispec-fg-muted)',\n fontSize: 'var(--omnispec-font-size-xs)',\n})\n\nconst loadingStyle = css({\n color: 'var(--omnispec-fg-muted)',\n textAlign: 'center',\n padding: '24px',\n})\n\nconst errorStyle = css({\n color: 'var(--omnispec-color-error)',\n padding: '12px',\n})\n\nconst headersStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n})\n\nconst headerRowStyle = css({\n display: 'flex',\n gap: '8px',\n padding: '2px 0',\n})\n\nconst headerKeyStyle = css({\n color: 'var(--omnispec-fg-secondary)',\n fontWeight: 600,\n})\n\nconst headerValueStyle = css({\n color: 'var(--omnispec-fg-primary)',\n wordBreak: 'break-all',\n})\n\nexport function ResponseViewer({ response, loading, error }: ResponseViewerProps) {\n if (loading) {\n return (\n <div className={containerStyle}>\n <div className={loadingStyle}>Sending request...</div>\n </div>\n )\n }\n\n if (error) {\n return (\n <div className={containerStyle}>\n <div className={errorStyle}>{error}</div>\n </div>\n )\n }\n\n if (!response) return null\n\n const statusColor = getStatusColor(response.status)\n const isBinary = response.bodyEncoding === 'base64'\n const bodyLanguage = detectLanguage(response.contentType)\n const formattedBody = isBinary ? '' : formatBody(response.body, bodyLanguage)\n\n const handleDownload = () => {\n const blob = base64ToBlob(response.body, response.contentType)\n const url = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = url\n anchor.download = filenameForResponse(response.headers, response.contentType)\n document.body.appendChild(anchor)\n anchor.click()\n anchor.remove()\n URL.revokeObjectURL(url)\n }\n\n // Approximate decoded size of a base64 payload.\n const binarySize = isBinary ? Math.floor((response.body.length * 3) / 4) : 0\n\n return (\n <div className={`adr-response ${containerStyle}`}>\n <div className={statusBarStyle}>\n <span className={css(statusCodeBaseStyle, { color: statusColor })}>\n {response.status} {response.statusText}\n </span>\n <span className={durationStyle}>{response.duration.toFixed(0)}ms</span>\n </div>\n\n <Tabs\n tabs={[\n {\n id: 'body',\n label: 'Response Body',\n content: isBinary ? (\n <div className={binaryPanelStyle}>\n <span className={binaryInfoStyle}>\n Binary response — {response.contentType.split(';')[0]} ({formatSize(binarySize)})\n </span>\n <Button variant=\"secondary\" onClick={handleDownload}>\n Download\n </Button>\n </div>\n ) : (\n <CodeBlock\n code={formattedBody}\n language={bodyLanguage}\n title={response.contentType}\n maxHeight=\"300px\"\n />\n ),\n },\n {\n id: 'headers',\n label: 'Headers',\n content: (\n <div className={headersStyle}>\n {Object.entries(response.headers).map(([key, value]) => (\n <div key={key} className={headerRowStyle}>\n <span className={headerKeyStyle}>{key}:</span>\n <span className={headerValueStyle}>{value}</span>\n </div>\n ))}\n </div>\n ),\n },\n ]}\n />\n </div>\n )\n}\n\nconst binaryPanelStyle = css({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: '0.75rem',\n padding: '1rem',\n})\n\nconst binaryInfoStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n fontFamily: 'var(--omnispec-font-mono)',\n wordBreak: 'break-all',\n})\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction getStatusColor(status: number): string {\n if (status >= 200 && status < 300) return 'var(--omnispec-color-success)'\n if (status >= 300 && status < 400) return 'var(--omnispec-color-info)'\n if (status >= 400 && status < 500) return 'var(--omnispec-color-warning)'\n return 'var(--omnispec-color-error)'\n}\n\nfunction detectLanguage(contentType: string): CodeLanguage {\n if (contentType.includes('json')) return 'json'\n if (contentType.includes('xml') || contentType.includes('html')) return 'xml'\n if (contentType.includes('yaml') || contentType.includes('yml')) return 'yaml'\n return 'text'\n}\n\nfunction formatBody(body: string, language: CodeLanguage): string {\n if (language === 'json') {\n try {\n return JSON.stringify(JSON.parse(body), null, 2)\n } catch {\n return body\n }\n }\n return body\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport { Icon } from '../common/Icon'\n\ninterface SecretInputProps {\n value: string\n onChange: (value: string) => void\n placeholder?: string\n /** Applied to the underlying input (e.g. the shared auth input style). */\n className?: string\n autoComplete?: string\n 'aria-label'?: string\n}\n\n/**\n * A masked credential input (password/API-key/token). Renders as a password\n * field by default with an eye toggle to reveal/hide the value. Reveal state is\n * local and defaults to hidden, so a persisted secret is never shown until the\n * user explicitly reveals it.\n */\nexport function SecretInput({\n value,\n onChange,\n placeholder,\n className,\n autoComplete,\n 'aria-label': ariaLabel,\n}: SecretInputProps) {\n const [revealed, setRevealed] = useState(false)\n\n return (\n <div className={wrapStyle}>\n <input\n type={revealed ? 'text' : 'password'}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n className={className}\n autoComplete={autoComplete}\n aria-label={ariaLabel}\n // Inline overrides win over the shared class regardless of stylesheet\n // insertion order: fill the wrapper and leave room for the toggle.\n style={{ width: '100%', paddingRight: '2.25rem' }}\n />\n <button\n type=\"button\"\n onClick={() => setRevealed((v) => !v)}\n className={toggleStyle}\n aria-label={revealed ? 'Hide value' : 'Show value'}\n aria-pressed={revealed}\n title={revealed ? 'Hide' : 'Show'}\n >\n <Icon name={revealed ? 'eye-off' : 'eye'} size=\"1rem\" />\n </button>\n </div>\n )\n}\n\nconst wrapStyle = css({\n position: 'relative',\n flex: 1,\n display: 'flex',\n alignItems: 'stretch',\n})\n\nconst toggleStyle = css({\n position: 'absolute',\n right: '4px',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '1.75rem',\n height: '1.75rem',\n padding: 0,\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n color: 'var(--omnispec-fg-muted)',\n borderRadius: 'var(--omnispec-border-radius)',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n },\n '&:focus-visible': {\n outline: '2px solid var(--omnispec-color-primary)',\n outlineOffset: '1px',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\nexport const authStyles = {\n section: css({\n padding: '0.75rem 0',\n borderBottom: '1px solid var(--omnispec-border-color)',\n '&:last-child': {\n borderBottom: 'none',\n },\n }),\n label: css({\n fontWeight: 600,\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-primary)',\n marginBottom: '4px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }),\n hint: css({\n fontWeight: 400,\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n }),\n description: css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n margin: '4px 0 8px',\n }),\n inputRow: css({\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n }),\n input: css({\n flex: 1,\n padding: '6px 10px',\n border: '1px solid var(--omnispec-input-border)',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontFamily: 'var(--omnispec-font-mono)',\n '&:focus': {\n borderColor: 'var(--omnispec-color-primary)',\n outline: 'none',\n },\n '&:hover': {\n borderColor: 'var(--omnispec-color-primary)',\n },\n }),\n applyBtn: css({\n padding: '6px 16px',\n backgroundColor: 'var(--omnispec-color-primary)',\n color: 'var(--omnispec-color-primary-text)',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 500,\n '&:hover': {\n opacity: 0.85,\n },\n }),\n removeBtn: css({\n padding: '6px 16px',\n backgroundColor: 'var(--omnispec-color-error)',\n color: '#fff',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 500,\n '&:hover': {\n opacity: 0.85,\n },\n }),\n} as const\n\ninterface ApiKeyAuthProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied?: boolean\n appliedValue?: AppliedAuthValue\n}\n\nexport function ApiKeyAuth({ scheme, onApply, onRemove, applied, appliedValue }: ApiKeyAuthProps) {\n const [value, setValue] = useState(appliedValue?.input?.value ?? '')\n\n const handleApply = () => {\n if (!value.trim()) return\n const headerName = scheme.in === 'query' ? scheme.name ?? 'api_key' : scheme.name ?? 'X-API-Key'\n onApply({\n schemeId: scheme.id,\n headerName,\n headerValue: value,\n input: { value },\n })\n }\n\n const handleRemove = () => {\n // Clearing the input on remove keeps the field in sync with the removed auth.\n setValue('')\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>({scheme.in}: {scheme.name})</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n <div className={authStyles.inputRow}>\n <SecretInput\n value={value}\n onChange={setValue}\n placeholder=\"Enter API key\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} value`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApply} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css, cx } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue, OAuth2Flow } from '../../types/auth.types'\nimport { authStyles } from './ApiKeyAuth'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\ninterface OAuth2AuthManualProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied: boolean\n appliedValue?: AppliedAuthValue\n /**\n * Currently selected server URL. Carried for parity with {@link OAuth2Auth};\n * the manual shell renders the flow URLs verbatim (no interactive resolution),\n * so it is not used here beyond documenting the contract.\n */\n serverUrl?: string\n}\n\ntype FlowType = 'authorizationCode' | 'implicit' | 'clientCredentials' | 'password'\n\nconst flowLabels: Record<FlowType, string> = {\n authorizationCode: 'Authorization Code',\n implicit: 'Implicit',\n clientCredentials: 'Client Credentials',\n password: 'Resource Owner Password',\n}\n\nconst flowSelectorStyle = css({\n display: 'flex',\n gap: '4px',\n marginBottom: '.5rem',\n})\n\nconst flowTabStyle = css({\n padding: '4px 10px',\n background: 'var(--omnispec-bg-tertiary)',\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n '&:hover': {\n borderColor: 'var(--omnispec-color-primary)',\n },\n})\n\nconst activeFlowTabStyle = css({\n backgroundColor: 'var(--omnispec-color-primary)',\n color: 'var(--omnispec-color-primary-text)',\n borderColor: 'var(--omnispec-color-primary)',\n})\n\nconst flowDetailsStyle = css({\n marginBottom: '0.5rem',\n})\n\nconst urlRowStyle = css({\n display: 'flex',\n gap: '0.5rem',\n fontSize: 'var(--omnispec-font-size-sm)',\n marginBottom: '0.25rem',\n})\n\nconst urlLabelStyle = css({\n color: 'var(--omnispec-fg-muted)',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n marginBottom: '.5rem',\n display: 'inline-block',\n})\n\nconst urlValueStyle = css({\n color: 'var(--omnispec-fg-secondary)',\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-sm)',\n wordBreak: 'break-all',\n})\n\nconst scopesStyle = css({\n marginTop: '0.5rem',\n fontSize: 'var(--omnispec-font-size-sm)',\n})\n\nconst scopeListStyle = css({\n marginTop: '0.25rem',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.125rem',\n})\n\nconst scopeItemStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n})\n\nconst scopeNameStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-secondary)',\n})\n\nconst scopeDescStyle = css({\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst tokenSectionStyle = css({\n marginTop: '8px',\n})\n\nconst flowErrorStyle = css({\n marginTop: '8px',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-color-error)',\n})\n\n/**\n * Manual (non-interactive) OAuth 2.0 authorize shell. Renders read-only flow\n * details — authorization / token / refresh URLs and the declared scopes for\n * each flow — plus a manual access-token entry with Apply / Remove.\n *\n * This is the Free-tier surface: there is no Get Token, no PKCE, no\n * client id/secret, no scope selection and no flow-variable inputs. The only\n * way to authorize is by pasting a token, which is applied verbatim as a\n * `Bearer` credential. The interactive counterpart lives in\n * {@link OAuth2Auth} (Pro-gated).\n */\nexport function OAuth2AuthManual({ scheme, onApply, onRemove, applied, appliedValue }: OAuth2AuthManualProps) {\n const flows = scheme.flows\n const availableFlows = flows ? (Object.entries(flows).filter(([, v]) => v) as [FlowType, OAuth2Flow][]) : []\n const [activeFlow, setActiveFlow] = useState<FlowType>(availableFlows[0]?.[0] ?? 'authorizationCode')\n const [token, setToken] = useState(appliedValue?.input?.token ?? '')\n const [applyError, setApplyError] = useState<string | undefined>(undefined)\n\n const currentFlow = flows?.[activeFlow]\n\n const handleTokenChange = (value: string) => {\n setToken(value)\n if (applyError) setApplyError(undefined)\n }\n\n const handleApplyToken = () => {\n if (!token.trim()) {\n setApplyError('Enter an access token to apply.')\n return\n }\n setApplyError(undefined)\n onApply({\n schemeId: scheme.id,\n headerName: 'Authorization',\n headerValue: `Bearer ${token}`,\n input: { token },\n })\n }\n\n const handleRemove = () => {\n // Clear the access token field so removing the auth also empties the input.\n setToken('')\n setApplyError(undefined)\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>(OAuth 2.0)</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n\n {availableFlows.length > 1 && (\n <div className={flowSelectorStyle}>\n {availableFlows.map(([key]) => (\n <button\n key={key}\n type=\"button\"\n onClick={() => setActiveFlow(key)}\n className={cx(flowTabStyle, key === activeFlow && activeFlowTabStyle)}\n >\n {flowLabels[key]}\n </button>\n ))}\n </div>\n )}\n\n {currentFlow && (\n <div className={flowDetailsStyle}>\n {currentFlow.authorizationUrl && (\n <div className={urlRowStyle}>\n <span className={urlLabelStyle}>Auth URL:</span>\n <code className={urlValueStyle}>{currentFlow.authorizationUrl}</code>\n </div>\n )}\n {currentFlow.tokenUrl && (\n <div className={urlRowStyle}>\n <span className={urlLabelStyle}>Token URL:</span>\n <code className={urlValueStyle}>{currentFlow.tokenUrl}</code>\n </div>\n )}\n {currentFlow.refreshUrl && (\n <div className={urlRowStyle}>\n <span className={urlLabelStyle}>Refresh URL:</span>\n <code className={urlValueStyle}>{currentFlow.refreshUrl}</code>\n </div>\n )}\n {currentFlow.scopes && Object.keys(currentFlow.scopes).length > 0 && (\n <div className={scopesStyle}>\n <span className={urlLabelStyle}>Scopes:</span>\n <div className={scopeListStyle}>\n {Object.entries(currentFlow.scopes).map(([scope, desc]) => (\n <div key={scope} className={scopeItemStyle}>\n <code className={scopeNameStyle}>{scope}</code>\n {desc && <span className={scopeDescStyle}> — {desc}</span>}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n\n <div className={tokenSectionStyle}>\n <div className={authStyles.label}>\n <span className={authStyles.hint}>Enter access token:</span>\n </div>\n <div className={authStyles.inputRow}>\n <SecretInput\n value={token}\n onChange={handleTokenChange}\n placeholder=\"Access token\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} access token`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApplyToken} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n {applyError && <p role=\"alert\" className={flowErrorStyle}>{applyError}</p>}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { authStyles } from './ApiKeyAuth'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\ninterface OpenIdConnectManualProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied: boolean\n appliedValue?: AppliedAuthValue\n /**\n * Selected server URL. Accepted for parity with the discovery-backed\n * OpenIdConnectAuth, but this free shell performs no network resolution.\n */\n serverUrl?: string\n}\n\nconst errorStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-color-error)',\n margin: '4px 0 8px',\n})\n\nconst urlRowStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n margin: '4px 0 8px',\n wordBreak: 'break-all',\n})\n\nconst urlLinkStyle = css({\n color: 'var(--omnispec-color-primary)',\n})\n\n/**\n * OpenID Connect manual shell (`openIdConnect` security scheme, free tier).\n * Shows only what the spec declares — the scheme `description` and its\n * `openIdConnectUrl` (as a link) — plus a manual access-token paste. It performs\n * NO discovery fetch: runtime discovery of the OpenID configuration is a Pro\n * feature (see OpenIdConnectAuth). The free experience is spec data + manual\n * token entry, which never touches the network.\n */\nexport function OpenIdConnectManual({\n scheme,\n onApply,\n onRemove,\n applied,\n appliedValue,\n}: OpenIdConnectManualProps) {\n const [token, setToken] = useState(appliedValue?.input?.token ?? '')\n const [error, setError] = useState<string | undefined>(undefined)\n\n const handleApply = () => {\n if (!token.trim()) {\n setError('Enter an access token to apply.')\n return\n }\n setError(undefined)\n onApply({\n schemeId: scheme.id,\n headerName: 'Authorization',\n headerValue: `Bearer ${token}`,\n input: { token },\n })\n }\n\n const handleRemove = () => {\n setToken('')\n setError(undefined)\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>(OpenID Connect)</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n {scheme.openIdConnectUrl && (\n <p className={urlRowStyle}>\n Discovery URL:{' '}\n <a\n className={urlLinkStyle}\n href={scheme.openIdConnectUrl}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n >\n {scheme.openIdConnectUrl}\n </a>\n </p>\n )}\n <div className={authStyles.label}>\n <span className={authStyles.hint}>Enter access token directly:</span>\n </div>\n <div className={authStyles.inputRow}>\n <SecretInput\n value={token}\n onChange={(value) => {\n setToken(value)\n if (error) setError(undefined)\n }}\n placeholder=\"Access token\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} access token`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApply} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n {error && (\n <p role=\"alert\" className={errorStyle}>\n {error}\n </p>\n )}\n </div>\n )\n}\n"],"names":["getStorage","value","getStatusColor","getStatusBg","contentTypeBadgeStyle","sectionStyle","sectionTitleStyle","containerStyle","generators","languageBarStyle","langBtnStyle","langBtnActiveStyle","buildTargetUrl","errorStyle","urlRowStyle"],"mappings":"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"}
|