@clarify-labs/renderer 0.10.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/output/{ClarifyShell-C6li72Ce.cjs → ClarifyShell-BAjq876Z.cjs} +113 -90
  2. package/output/ClarifyShell-BAjq876Z.cjs.map +1 -0
  3. package/output/{ClarifyShell-1LuBliwt.js → ClarifyShell-GoSXvgMg.js} +114 -91
  4. package/output/ClarifyShell-GoSXvgMg.js.map +1 -0
  5. package/output/{MermaidViewer-B6-BMCJG.cjs → MermaidViewer-BZ8ghcFP.cjs} +2 -2
  6. package/output/{MermaidViewer-B6-BMCJG.cjs.map → MermaidViewer-BZ8ghcFP.cjs.map} +1 -1
  7. package/output/{MermaidViewer-dXsomvM7.js → MermaidViewer-CkIxyqtf.js} +2 -2
  8. package/output/{MermaidViewer-dXsomvM7.js.map → MermaidViewer-CkIxyqtf.js.map} +1 -1
  9. package/output/{OpenApiOperation-DgrqzeiS.js → OpenApiOperation-C2vJztWZ.js} +1983 -365
  10. package/output/OpenApiOperation-C2vJztWZ.js.map +1 -0
  11. package/output/{OpenApiOperation-B52IWlKb.cjs → OpenApiOperation-D-5uE5v7.cjs} +2009 -361
  12. package/output/OpenApiOperation-D-5uE5v7.cjs.map +1 -0
  13. package/output/{PageActions-BjB6PYmL.cjs → PageActions-DJRXlGhz.cjs} +532 -358
  14. package/output/PageActions-DJRXlGhz.cjs.map +1 -0
  15. package/output/{PageActions-D7K9LDGf.js → PageActions-bugd7GZh.js} +535 -361
  16. package/output/PageActions-bugd7GZh.js.map +1 -0
  17. package/output/{SearchDialog-CIPvXMT3.cjs → SearchDialog-8AdCRp6K.cjs} +3 -3
  18. package/output/{SearchDialog-CIPvXMT3.cjs.map → SearchDialog-8AdCRp6K.cjs.map} +1 -1
  19. package/output/{SearchDialog-CxYLjRi5.js → SearchDialog-CBJjDs_9.js} +3 -3
  20. package/output/{SearchDialog-CxYLjRi5.js.map → SearchDialog-CBJjDs_9.js.map} +1 -1
  21. package/output/app/ContentDiagnostic.d.ts +2 -1
  22. package/output/app/PageFooter.d.ts +1 -1
  23. package/output/client.cjs +3 -3
  24. package/output/client.js +3 -3
  25. package/output/components/AccordionGroup.d.ts +7 -0
  26. package/output/components/Collapse.d.ts +2 -0
  27. package/output/components/FileTree.d.ts +10 -0
  28. package/output/components/Image.d.ts +6 -0
  29. package/output/components/Steps.d.ts +12 -0
  30. package/output/components/Tabs.d.ts +12 -5
  31. package/output/components/Tooltip.d.ts +8 -0
  32. package/output/components/index.d.ts +10 -1
  33. package/output/core/i18n.d.ts +1 -1
  34. package/output/core/types.d.ts +37 -19
  35. package/output/{i18n-DnqZHFT7.js → i18n-BPrC45nD.js} +102 -2
  36. package/output/i18n-BPrC45nD.js.map +1 -0
  37. package/output/{i18n-b4iTLeia.cjs → i18n-wXINKKV0.cjs} +102 -2
  38. package/output/i18n-wXINKKV0.cjs.map +1 -0
  39. package/output/index.cjs +38 -8
  40. package/output/index.cjs.map +1 -1
  41. package/output/index.d.ts +8 -7
  42. package/output/index.js +34 -9
  43. package/output/index.js.map +1 -1
  44. package/output/mdx/components.d.ts +11 -1
  45. package/output/mdx/primitives.d.ts +4 -2
  46. package/output/openapi/components/CodeDisplay.d.ts +1 -0
  47. package/output/openapi/components/EndpointMethodBadge.d.ts +6 -0
  48. package/output/openapi/components/EndpointSections.d.ts +2 -2
  49. package/output/openapi/components/ExamplePanels.d.ts +2 -2
  50. package/output/openapi/components/InlineListbox.d.ts +31 -0
  51. package/output/openapi/components/OpenApiAuthPanel.d.ts +12 -0
  52. package/output/openapi/components/OpenApiOperation.d.ts +1 -9
  53. package/output/openapi/components/OpenApiOperation.state.d.ts +4 -2
  54. package/output/openapi/components/OpenApiRequest.d.ts +18 -0
  55. package/output/openapi/components/OpenApiRequestFields.d.ts +25 -0
  56. package/output/openapi/components/OpenApiResponseViewer.d.ts +8 -0
  57. package/output/openapi/components/SendRequestButton.d.ts +9 -0
  58. package/output/openapi/components/helpers.d.ts +6 -1
  59. package/output/openapi/components/useOpenApiRequestState.d.ts +41 -0
  60. package/output/openapi/entry.d.ts +2 -0
  61. package/output/openapi/index.d.ts +2 -2
  62. package/output/openapi/lib/api-exchange-code.d.ts +8 -0
  63. package/output/openapi/lib/api-exchange.d.ts +30 -0
  64. package/output/openapi/lib/api-request.d.ts +24 -0
  65. package/output/openapi/lib/request-code.d.ts +2 -2
  66. package/output/openapi/lib/request-parameters.d.ts +5 -0
  67. package/output/openapi/store.d.ts +10 -0
  68. package/output/openapi/types.d.ts +4 -0
  69. package/output/preview.cjs +37 -27
  70. package/output/preview.cjs.map +1 -1
  71. package/output/preview.js +37 -27
  72. package/output/preview.js.map +1 -1
  73. package/output/{render-Di5B6Zc0.cjs → render-FICIzeXz.cjs} +2 -2
  74. package/output/{render-Di5B6Zc0.cjs.map → render-FICIzeXz.cjs.map} +1 -1
  75. package/output/{render-DKj24Jqw.js → render-XQiw_48i.js} +2 -2
  76. package/output/{render-DKj24Jqw.js.map → render-XQiw_48i.js.map} +1 -1
  77. package/output/renderer.css +1310 -318
  78. package/output/server.cjs +2 -2
  79. package/output/server.js +2 -2
  80. package/output/theme/ThemeEditor.d.ts +8 -4
  81. package/output/theme/variables.d.ts +8 -4
  82. package/package.json +1 -1
  83. package/output/ClarifyShell-1LuBliwt.js.map +0 -1
  84. package/output/ClarifyShell-C6li72Ce.cjs.map +0 -1
  85. package/output/OpenApiOperation-B52IWlKb.cjs.map +0 -1
  86. package/output/OpenApiOperation-DgrqzeiS.js.map +0 -1
  87. package/output/PageActions-BjB6PYmL.cjs.map +0 -1
  88. package/output/PageActions-D7K9LDGf.js.map +0 -1
  89. package/output/i18n-DnqZHFT7.js.map +0 -1
  90. package/output/i18n-b4iTLeia.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-BPrC45nD.js","names":[],"sources":["../source/core/context.tsx","../source/core/i18n.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\nimport type { Config, OpenApiRegistry } from './types'\n\nexport const ConfigContext = createContext<Config | null>(null)\nexport const LocaleContext = createContext<string | undefined>(undefined)\nexport const OpenApiSpecsContext = createContext<OpenApiRegistry>({})\n\nexport function useConfig(): Config {\n const config = useContext(ConfigContext)\n if (!config) {\n throw new Error(\n '[clarify] useConfig must be used within a ConfigContext.Provider'\n )\n }\n return config\n}\n\nexport function useConfigOptional(): Config | null {\n return useContext(ConfigContext)\n}\n\nexport function useLocale(): string | undefined {\n return useContext(LocaleContext)\n}\n\nexport function useOpenApiSpecs(): OpenApiRegistry {\n return useContext(OpenApiSpecsContext)\n}\n","import { useContext } from 'react'\n\nimport { ConfigContext, LocaleContext } from './context'\n\nexport type BuiltInLocale = 'en' | 'zh-CN'\n\nexport type BuiltInTextKey =\n | 'actions.code'\n | 'actions.copy'\n | 'actions.copying'\n | 'actions.copied'\n | 'actions.copyFailed'\n | 'builtWith.label'\n | 'builtWith.prefix'\n | 'callout.danger'\n | 'callout.info'\n | 'callout.note'\n | 'callout.success'\n | 'callout.tip'\n | 'callout.warning'\n | 'contentActions.copyContent'\n | 'contentActions.copyContentDescription'\n | 'contentActions.copyLink'\n | 'contentActions.copyLinkDescription'\n | 'contentActions.copyLlms'\n | 'contentActions.copyLlmsDescription'\n | 'contentActions.copiedLlms'\n | 'contentActions.editPage'\n | 'contentActions.editPageDescription'\n | 'contentActions.copyOptions'\n | 'contentActions.copiedContent'\n | 'contentActions.copiedLink'\n | 'contentActions.viewMarkdown'\n | 'contentActions.viewMarkdownDescription'\n | 'contentActions.viewOpenApi'\n | 'contentActions.viewOpenApiDescription'\n | 'feedback.no'\n | 'feedback.prompt'\n | 'feedback.thanks'\n | 'feedback.yes'\n | 'navigation.documentation'\n | 'navigation.next'\n | 'navigation.previous'\n | 'navigation.previousNext'\n | 'navigation.toggle'\n | 'navbar.home'\n | 'navbar.openLinks'\n | 'navbar.sections'\n | 'notFound.description'\n | 'notFound.home'\n | 'notFound.label'\n | 'notFound.title'\n | 'openapi.apiDocumentation'\n | 'openapi.authentication'\n | 'openapi.bodyProperties'\n | 'openapi.collapse'\n | 'openapi.clear'\n | 'openapi.codeSnippet'\n | 'openapi.endpointNotFound'\n | 'openapi.example'\n | 'openapi.expand'\n | 'openapi.headers'\n | 'openapi.headerName'\n | 'openapi.headerValue'\n | 'openapi.headerParameters'\n | 'openapi.fieldDescription'\n | 'openapi.includeParameter'\n | 'openapi.cookieParameters'\n | 'openapi.cookieParametersBrowserManaged'\n | 'openapi.cookies'\n | 'openapi.cookiesBrowserHidden'\n | 'openapi.language'\n | 'openapi.client'\n | 'openapi.closeRequest'\n | 'openapi.credential'\n | 'openapi.loading'\n | 'openapi.mediaType'\n | 'openapi.none'\n | 'openapi.noRequestConfiguration'\n | 'openapi.openApiReference'\n | 'openapi.operationParameter'\n | 'openapi.optional'\n | 'openapi.parameter'\n | 'openapi.parameterInvalidArray'\n | 'openapi.parameterInvalidDate'\n | 'openapi.parameterInvalidDateTime'\n | 'openapi.parameterInvalidEnum'\n | 'openapi.parameterInvalidInteger'\n | 'openapi.parameterInvalidNumber'\n | 'openapi.parameterInvalidObject'\n | 'openapi.pathParameters'\n | 'openapi.queryParameters'\n | 'openapi.preview'\n | 'openapi.raw'\n | 'openapi.resetToExample'\n | 'openapi.body'\n | 'openapi.binaryPreview'\n | 'openapi.downloadBody'\n | 'openapi.noHeaders'\n | 'openapi.responseViews'\n | 'openapi.responseUrl'\n | 'openapi.redirected'\n | 'openapi.searchHeaders'\n | 'openapi.unknownContentType'\n | 'openapi.variables'\n | 'openapi.requestConfiguration'\n | 'openapi.requestHeaders'\n | 'openapi.request'\n | 'openapi.requestBody'\n | 'openapi.requestBodyEmpty'\n | 'openapi.requestCorsHint'\n | 'openapi.responseBodyProperties'\n | 'openapi.responseHeaders'\n | 'openapi.required'\n | 'openapi.requiredBadge'\n | 'openapi.response'\n | 'openapi.responseBodyEmpty'\n | 'openapi.responseBodyEmptyTitle'\n | 'openapi.responseEmpty'\n | 'openapi.responseEmptyTitle'\n | 'openapi.responseErrorTitle'\n | 'openapi.responses'\n | 'openapi.schemaExample'\n | 'openapi.sendRequest'\n | 'openapi.sendingRequest'\n | 'openapi.server'\n | 'openapi.scrollExamplesLeft'\n | 'openapi.scrollExamplesRight'\n | 'openapi.specNotFound'\n | 'openapi.specPathMissing'\n | 'openapi.status'\n | 'openapi.tryRequest'\n | 'openapi.version'\n | 'openapi.webhookResponse'\n | 'openapi.webhookResponses'\n | 'search.button'\n | 'search.noResults'\n | 'search.placeholder'\n | 'search.shortcutCtrl'\n | 'renderError.componentStack'\n | 'renderError.description'\n | 'renderError.details'\n | 'renderError.message'\n | 'renderError.path'\n | 'renderError.reload'\n | 'renderError.stack'\n | 'renderError.title'\n | 'renderError.version'\n | 'renderError.type'\n | 'theme.switchToDark'\n | 'theme.switchToLight'\n | 'theme.switchToSystem'\n | 'language.switch'\n | 'mermaid.zoomIn'\n | 'mermaid.zoomOut'\n | 'mermaid.resetZoom'\n | 'mermaid.renderError'\n | 'mermaid.scrollHint'\n\nconst builtInText = {\n en: {\n 'actions.code': 'Code',\n 'actions.copy': 'Copy',\n 'actions.copying': 'Copying...',\n 'actions.copied': 'Copied!',\n 'actions.copyFailed': 'Copy failed',\n 'builtWith.label': 'Built with Clarify',\n 'builtWith.prefix': 'Built with',\n 'callout.danger': 'Danger',\n 'callout.info': 'Info',\n 'callout.note': 'Note',\n 'callout.success': 'Success',\n 'callout.tip': 'Tip',\n 'callout.warning': 'Warning',\n 'contentActions.copyContent': 'Copy page',\n 'contentActions.copyContentDescription': 'Copy this page as {contentType} for LLMs',\n 'contentActions.copyLink': 'Copy {contentType} link',\n 'contentActions.copyLinkDescription': 'Copy the raw {contentType} content link for this page',\n 'contentActions.copyLlms': 'Copy llms.txt',\n 'contentActions.copyLlmsDescription': 'Copy the llms.txt link for this site',\n 'contentActions.copiedLlms': 'Copied llms.txt',\n 'contentActions.editPage': 'Edit this page',\n 'contentActions.editPageDescription': 'Open the source file for this page',\n 'contentActions.copyOptions': 'Choose copy option',\n 'contentActions.copiedContent': 'Copied page',\n 'contentActions.copiedLink': 'Copied link',\n 'contentActions.viewMarkdown': 'View as Markdown',\n 'contentActions.viewMarkdownDescription': 'View this page as plain text',\n 'contentActions.viewOpenApi': 'View raw OpenAPI',\n 'contentActions.viewOpenApiDescription': 'Open the API description file in a new tab',\n 'feedback.no': 'No',\n 'feedback.prompt': 'Was this page helpful?',\n 'feedback.thanks': 'Thanks for your feedback!',\n 'feedback.yes': 'Yes',\n 'navigation.documentation': 'Documentation',\n 'navigation.next': 'Next',\n 'navigation.previous': 'Previous',\n 'navigation.previousNext': 'Previous and next pages',\n 'navigation.toggle': 'Toggle navigation',\n 'navbar.home': 'Home',\n 'navbar.openLinks': 'Open navigation links',\n 'navbar.sections': 'Documentation sections',\n 'notFound.description': 'The page may have moved, been renamed, or never existed. Check the address or return to the homepage.',\n 'notFound.home': 'Back to homepage',\n 'notFound.label': '404',\n 'notFound.title': 'Page not found',\n 'openapi.apiDocumentation': 'API Documentation',\n 'openapi.authentication': 'Authentication',\n 'openapi.bodyProperties': 'Body properties',\n 'openapi.collapse': 'Collapse',\n 'openapi.clear': 'Clear',\n 'openapi.codeSnippet': 'Code snippet',\n 'openapi.endpointNotFound': 'Endpoint not found: {endpoint}',\n 'openapi.example': 'Example',\n 'openapi.expand': 'Expand',\n 'openapi.headers': 'Headers',\n 'openapi.headerName': 'Name',\n 'openapi.headerValue': 'Value',\n 'openapi.headerParameters': 'Header parameters',\n 'openapi.fieldDescription': 'Field description',\n 'openapi.includeParameter': 'Include parameter',\n 'openapi.cookieParameters': 'Cookie parameters',\n 'openapi.cookieParametersBrowserManaged': 'Cookies are managed by the browser. Matching cookies are sent when the server allows credentialed requests.',\n 'openapi.cookies': 'Cookies',\n 'openapi.cookiesBrowserHidden': 'Cookies are managed by the browser. Set-Cookie values are not exposed to JavaScript.',\n 'openapi.language': 'Language',\n 'openapi.client': 'Client',\n 'openapi.closeRequest': 'Close request tester',\n 'openapi.credential': 'Credential',\n 'openapi.loading': 'Loading OpenAPI spec...',\n 'openapi.mediaType': 'Media type',\n 'openapi.none': 'None',\n 'openapi.noRequestConfiguration': 'This request has no parameters, authentication, variables, or request body. It is ready to send as-is.',\n 'openapi.openApiReference': 'OpenAPI Reference',\n 'openapi.operationParameter': 'Operation parameter.',\n 'openapi.optional': 'Optional.',\n 'openapi.parameter': 'parameter',\n 'openapi.parameterInvalidArray': 'Enter a valid JSON array.',\n 'openapi.parameterInvalidDate': 'Enter a valid date.',\n 'openapi.parameterInvalidDateTime': 'Enter a valid date and time.',\n 'openapi.parameterInvalidEnum': 'Select one of the allowed values.',\n 'openapi.parameterInvalidInteger': 'Enter a whole number.',\n 'openapi.parameterInvalidNumber': 'Enter a valid number.',\n 'openapi.parameterInvalidObject': 'Enter a valid JSON object.',\n 'openapi.pathParameters': 'Path parameters',\n 'openapi.queryParameters': 'Query parameters',\n 'openapi.preview': 'Preview',\n 'openapi.raw': 'Raw',\n 'openapi.resetToExample': 'Reset to example',\n 'openapi.body': 'Body',\n 'openapi.binaryPreview': 'Binary response preview is not available.',\n 'openapi.downloadBody': 'Download response body',\n 'openapi.noHeaders': 'No response headers match the current search.',\n 'openapi.responseViews': 'Response views',\n 'openapi.responseUrl': 'Final URL',\n 'openapi.redirected': 'Redirected',\n 'openapi.searchHeaders': 'Search response headers',\n 'openapi.unknownContentType': 'Unknown content type',\n 'openapi.variables': 'Variables',\n 'openapi.requestConfiguration': 'Request configuration',\n 'openapi.requestHeaders': 'Request headers',\n 'openapi.request': 'Request',\n 'openapi.requestBody': 'Request body',\n 'openapi.requestBodyEmpty': 'No request body',\n 'openapi.requestCorsHint': 'The API may be unavailable from this browser because of its network or CORS policy',\n 'openapi.responseBodyProperties': 'Response body properties',\n 'openapi.responseHeaders': 'Response headers',\n 'openapi.required': 'Required.',\n 'openapi.requiredBadge': 'required',\n 'openapi.response': 'Response',\n 'openapi.responseBodyEmpty': 'The response body is empty.',\n 'openapi.responseBodyEmptyTitle': 'No response content',\n 'openapi.responseEmpty': 'Send the request to inspect the response.',\n 'openapi.responseEmptyTitle': 'Ready for a request',\n 'openapi.responseErrorTitle': 'Request failed',\n 'openapi.responses': 'Responses',\n 'openapi.schemaExample': 'Schema example',\n 'openapi.sendRequest': 'Send',\n 'openapi.sendingRequest': 'Sending',\n 'openapi.server': 'Server',\n 'openapi.scrollExamplesLeft': 'Scroll examples left',\n 'openapi.scrollExamplesRight': 'Scroll examples right',\n 'openapi.specNotFound': 'OpenAPI spec not found: {specPath}',\n 'openapi.specPathMissing': 'spec or specPath was not provided',\n 'openapi.status': 'Status',\n 'openapi.tryRequest': 'Try request',\n 'openapi.version': 'Version {version}',\n 'openapi.webhookResponse': 'Webhook response',\n 'openapi.webhookResponses': 'Webhook responses',\n 'search.button': 'Search...',\n 'search.noResults': 'Nothing found for {query}.',\n 'search.placeholder': 'Find something...',\n 'search.shortcutCtrl': 'Ctrl ',\n 'renderError.componentStack': 'React component stack',\n 'renderError.description': 'Clarify stopped rendering this route to keep the rest of the shell responsive. Review the diagnostics below, fix the page source, then reload the route.',\n 'renderError.details': 'Runtime diagnostics',\n 'renderError.message': 'Message',\n 'renderError.path': 'Route',\n 'renderError.reload': 'Reload route',\n 'renderError.stack': 'JavaScript stack trace',\n 'renderError.title': 'Route render failed',\n 'renderError.type': 'Error type',\n 'renderError.version': 'Clarify version',\n 'theme.switchToDark': 'Switch to dark theme',\n 'theme.switchToLight': 'Switch to light theme',\n 'theme.switchToSystem': 'Follow system theme',\n 'language.switch': 'Switch language',\n 'mermaid.zoomIn': 'Zoom in',\n 'mermaid.zoomOut': 'Zoom out',\n 'mermaid.resetZoom': 'Reset zoom',\n 'mermaid.renderError': 'Mermaid render error',\n 'mermaid.scrollHint': 'Click the diagram to enable scroll-to-zoom',\n },\n 'zh-CN': {\n 'actions.code': '代码',\n 'actions.copy': '复制',\n 'actions.copying': '正在复制...',\n 'actions.copied': '已复制!',\n 'actions.copyFailed': '复制失败',\n 'builtWith.label': '由 Clarify 构建',\n 'builtWith.prefix': '构建来自',\n 'callout.danger': '危险',\n 'callout.info': '信息',\n 'callout.note': '注意',\n 'callout.success': '成功',\n 'callout.tip': '提示',\n 'callout.warning': '警告',\n 'contentActions.copyContent': '复制页面',\n 'contentActions.copyContentDescription': '将页面以 {contentType} 格式复制给 LLMs',\n 'contentActions.copyLink': '复制 {contentType} 链接',\n 'contentActions.copyLinkDescription': '复制当前页面的 {contentType} 原始内容链接',\n 'contentActions.copyLlms': '复制 llms.txt',\n 'contentActions.copyLlmsDescription': '复制此站点的 llms.txt 链接',\n 'contentActions.copiedLlms': '已复制 llms.txt',\n 'contentActions.editPage': '编辑此页面',\n 'contentActions.editPageDescription': '打开当前页面的源文件',\n 'contentActions.copyOptions': '选择复制选项',\n 'contentActions.copiedContent': '已复制页面',\n 'contentActions.copiedLink': '已复制链接',\n 'contentActions.viewMarkdown': '以 Markdown 格式查看',\n 'contentActions.viewMarkdownDescription': '以纯文本查看此页面',\n 'contentActions.viewOpenApi': '查看 OpenAPI 原始内容',\n 'contentActions.viewOpenApiDescription': '在新标签页打开 API 描述文件',\n 'feedback.no': '否',\n 'feedback.prompt': '这个页面有帮助吗?',\n 'feedback.thanks': '感谢你的反馈!',\n 'feedback.yes': '是',\n 'navigation.documentation': '文档',\n 'navigation.next': '下一页',\n 'navigation.previous': '上一页',\n 'navigation.previousNext': '上一页和下一页',\n 'navigation.toggle': '切换导航',\n 'navbar.home': '首页',\n 'navbar.openLinks': '打开导航链接',\n 'navbar.sections': '文档栏目',\n 'notFound.description': '页面可能已移动、重命名或不存在。请检查地址,或返回首页继续浏览。',\n 'notFound.home': '返回首页',\n 'notFound.label': '404',\n 'notFound.title': '页面未找到',\n 'openapi.apiDocumentation': 'API 文档',\n 'openapi.authentication': '认证方式',\n 'openapi.bodyProperties': '请求体属性',\n 'openapi.collapse': '收起',\n 'openapi.clear': '清除',\n 'openapi.codeSnippet': '代码示例',\n 'openapi.endpointNotFound': '未找到端点:{endpoint}',\n 'openapi.example': '示例',\n 'openapi.expand': '展开',\n 'openapi.headers': '请求头',\n 'openapi.headerName': '名称',\n 'openapi.headerValue': '值',\n 'openapi.headerParameters': '请求头参数',\n 'openapi.fieldDescription': '字段说明',\n 'openapi.includeParameter': '传递参数',\n 'openapi.cookieParameters': 'Cookie 参数',\n 'openapi.cookieParametersBrowserManaged': 'Cookie 由浏览器管理;当服务端允许携带凭据时,匹配的 Cookie 会随请求发送。',\n 'openapi.cookies': 'Cookies',\n 'openapi.cookiesBrowserHidden': 'Cookie 由浏览器管理,JavaScript 无法读取 Set-Cookie 的值。',\n 'openapi.language': '语言',\n 'openapi.client': '客户端',\n 'openapi.closeRequest': '关闭请求测试器',\n 'openapi.credential': '认证凭证',\n 'openapi.loading': '正在加载 OpenAPI 描述文件...',\n 'openapi.mediaType': '媒体类型',\n 'openapi.none': '无',\n 'openapi.noRequestConfiguration': '此请求没有参数、认证、变量或请求体,可以直接发送。',\n 'openapi.openApiReference': 'OpenAPI 参考',\n 'openapi.operationParameter': '操作参数。',\n 'openapi.optional': '可选。',\n 'openapi.parameter': '参数',\n 'openapi.parameterInvalidArray': '请输入有效的 JSON 数组。',\n 'openapi.parameterInvalidDate': '请输入有效日期。',\n 'openapi.parameterInvalidDateTime': '请输入有效的日期和时间。',\n 'openapi.parameterInvalidEnum': '请选择允许的值。',\n 'openapi.parameterInvalidInteger': '请输入整数。',\n 'openapi.parameterInvalidNumber': '请输入有效数字。',\n 'openapi.parameterInvalidObject': '请输入有效的 JSON 对象。',\n 'openapi.pathParameters': '路径参数',\n 'openapi.queryParameters': '查询参数',\n 'openapi.preview': '预览',\n 'openapi.raw': '原始内容',\n 'openapi.resetToExample': '重置为示例',\n 'openapi.body': '响应体',\n 'openapi.binaryPreview': '暂不支持预览二进制响应。',\n 'openapi.downloadBody': '下载响应体',\n 'openapi.noHeaders': '没有匹配当前搜索的响应头。',\n 'openapi.responseViews': '响应视图',\n 'openapi.responseUrl': '最终 URL',\n 'openapi.redirected': '已重定向',\n 'openapi.searchHeaders': '搜索响应头',\n 'openapi.unknownContentType': '未知内容类型',\n 'openapi.variables': '变量',\n 'openapi.requestConfiguration': '请求配置',\n 'openapi.requestHeaders': '请求头',\n 'openapi.request': '请求',\n 'openapi.requestBody': '请求体',\n 'openapi.requestBodyEmpty': '暂无请求体',\n 'openapi.requestCorsHint': '受目标 API 的网络或 CORS 策略影响,浏览器可能无法直接访问',\n 'openapi.responseBodyProperties': '响应体属性',\n 'openapi.responseHeaders': '响应头',\n 'openapi.required': '必填。',\n 'openapi.requiredBadge': '必填',\n 'openapi.response': '响应',\n 'openapi.responseBodyEmpty': '响应体为空。',\n 'openapi.responseBodyEmptyTitle': '无响应内容',\n 'openapi.responseEmpty': '发送请求后在这里查看响应。',\n 'openapi.responseEmptyTitle': '等待发送请求',\n 'openapi.responseErrorTitle': '请求失败',\n 'openapi.responses': '响应',\n 'openapi.schemaExample': 'Schema 示例',\n 'openapi.sendRequest': '发送',\n 'openapi.sendingRequest': '发送中',\n 'openapi.server': '服务地址',\n 'openapi.scrollExamplesLeft': '向左滚动示例',\n 'openapi.scrollExamplesRight': '向右滚动示例',\n 'openapi.specNotFound': '未找到 OpenAPI 描述文件:{specPath}',\n 'openapi.specPathMissing': '未提供 spec 或 specPath',\n 'openapi.status': '状态',\n 'openapi.tryRequest': '发起测试请求',\n 'openapi.version': '版本 {version}',\n 'openapi.webhookResponse': 'Webhook 响应',\n 'openapi.webhookResponses': 'Webhook 响应',\n 'search.button': '搜索...',\n 'search.noResults': '没有找到与 {query} 相关的结果。',\n 'search.placeholder': '搜索内容...',\n 'search.shortcutCtrl': 'Ctrl ',\n 'renderError.componentStack': 'React 组件栈',\n 'renderError.description': 'Clarify 已停止渲染此路由,以保证文档 Shell 仍可响应。请查看下方诊断信息,修复页面源码后重新加载路由。',\n 'renderError.details': '运行时诊断',\n 'renderError.message': '错误消息',\n 'renderError.path': '路由',\n 'renderError.reload': '重新加载路由',\n 'renderError.stack': 'JavaScript 堆栈',\n 'renderError.title': '路由渲染失败',\n 'renderError.type': '错误类型',\n 'renderError.version': 'Clarify 版本',\n 'theme.switchToDark': '切换到深色主题',\n 'theme.switchToLight': '切换到浅色主题',\n 'theme.switchToSystem': '跟随系统主题',\n 'language.switch': '切换语言',\n 'mermaid.zoomIn': '放大',\n 'mermaid.zoomOut': '缩小',\n 'mermaid.resetZoom': '重置缩放',\n 'mermaid.renderError': 'Mermaid 渲染错误',\n 'mermaid.scrollHint': '点击图表后即可滚轮缩放',\n },\n} satisfies Record<BuiltInLocale, Record<BuiltInTextKey, string>>\n\nexport function resolveBuiltInLocale(locale?: string): BuiltInLocale {\n return locale === 'zh-CN' || locale?.toLowerCase().startsWith('zh') ? 'zh-CN' : 'en'\n}\n\nexport function translateBuiltInText(locale: string | undefined, key: BuiltInTextKey, replacements: Record<string, string> = {}): string {\n let value = builtInText[resolveBuiltInLocale(locale)]?.[key] ?? builtInText.en[key]\n for (const [name, replacement] of Object.entries(replacements)) {\n value = value.replaceAll(`{${name}}`, replacement)\n }\n return value\n}\n\nexport function useBuiltInText(locale?: string) {\n const config = useContext(ConfigContext)\n const currentLocale = useContext(LocaleContext)\n const resolvedLocale = locale ?? currentLocale ?? config?.locales?.default\n return (key: BuiltInTextKey, replacements?: Record<string, string>) => translateBuiltInText(resolvedLocale, key, replacements)\n}\n"],"mappings":"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"}
@@ -23,7 +23,9 @@ var builtInText = {
23
23
  en: {
24
24
  "actions.code": "Code",
25
25
  "actions.copy": "Copy",
26
+ "actions.copying": "Copying...",
26
27
  "actions.copied": "Copied!",
28
+ "actions.copyFailed": "Copy failed",
27
29
  "builtWith.label": "Built with Clarify",
28
30
  "builtWith.prefix": "Built with",
29
31
  "callout.danger": "Danger",
@@ -65,37 +67,85 @@ var builtInText = {
65
67
  "notFound.label": "404",
66
68
  "notFound.title": "Page not found",
67
69
  "openapi.apiDocumentation": "API Documentation",
70
+ "openapi.authentication": "Authentication",
68
71
  "openapi.bodyProperties": "Body properties",
69
72
  "openapi.collapse": "Collapse",
73
+ "openapi.clear": "Clear",
74
+ "openapi.codeSnippet": "Code snippet",
70
75
  "openapi.endpointNotFound": "Endpoint not found: {endpoint}",
71
76
  "openapi.example": "Example",
72
77
  "openapi.expand": "Expand",
73
78
  "openapi.headers": "Headers",
79
+ "openapi.headerName": "Name",
80
+ "openapi.headerValue": "Value",
81
+ "openapi.headerParameters": "Header parameters",
82
+ "openapi.fieldDescription": "Field description",
83
+ "openapi.includeParameter": "Include parameter",
84
+ "openapi.cookieParameters": "Cookie parameters",
85
+ "openapi.cookieParametersBrowserManaged": "Cookies are managed by the browser. Matching cookies are sent when the server allows credentialed requests.",
86
+ "openapi.cookies": "Cookies",
87
+ "openapi.cookiesBrowserHidden": "Cookies are managed by the browser. Set-Cookie values are not exposed to JavaScript.",
74
88
  "openapi.language": "Language",
75
89
  "openapi.client": "Client",
90
+ "openapi.closeRequest": "Close request tester",
91
+ "openapi.credential": "Credential",
76
92
  "openapi.loading": "Loading OpenAPI spec...",
77
93
  "openapi.mediaType": "Media type",
78
94
  "openapi.none": "None",
95
+ "openapi.noRequestConfiguration": "This request has no parameters, authentication, variables, or request body. It is ready to send as-is.",
79
96
  "openapi.openApiReference": "OpenAPI Reference",
80
97
  "openapi.operationParameter": "Operation parameter.",
81
98
  "openapi.optional": "Optional.",
82
99
  "openapi.parameter": "parameter",
100
+ "openapi.parameterInvalidArray": "Enter a valid JSON array.",
101
+ "openapi.parameterInvalidDate": "Enter a valid date.",
102
+ "openapi.parameterInvalidDateTime": "Enter a valid date and time.",
103
+ "openapi.parameterInvalidEnum": "Select one of the allowed values.",
104
+ "openapi.parameterInvalidInteger": "Enter a whole number.",
105
+ "openapi.parameterInvalidNumber": "Enter a valid number.",
106
+ "openapi.parameterInvalidObject": "Enter a valid JSON object.",
83
107
  "openapi.pathParameters": "Path parameters",
84
108
  "openapi.queryParameters": "Query parameters",
109
+ "openapi.preview": "Preview",
110
+ "openapi.raw": "Raw",
111
+ "openapi.resetToExample": "Reset to example",
112
+ "openapi.body": "Body",
113
+ "openapi.binaryPreview": "Binary response preview is not available.",
114
+ "openapi.downloadBody": "Download response body",
115
+ "openapi.noHeaders": "No response headers match the current search.",
116
+ "openapi.responseViews": "Response views",
117
+ "openapi.responseUrl": "Final URL",
118
+ "openapi.redirected": "Redirected",
119
+ "openapi.searchHeaders": "Search response headers",
120
+ "openapi.unknownContentType": "Unknown content type",
121
+ "openapi.variables": "Variables",
122
+ "openapi.requestConfiguration": "Request configuration",
123
+ "openapi.requestHeaders": "Request headers",
85
124
  "openapi.request": "Request",
86
125
  "openapi.requestBody": "Request body",
87
126
  "openapi.requestBodyEmpty": "No request body",
127
+ "openapi.requestCorsHint": "The API may be unavailable from this browser because of its network or CORS policy",
88
128
  "openapi.responseBodyProperties": "Response body properties",
129
+ "openapi.responseHeaders": "Response headers",
89
130
  "openapi.required": "Required.",
90
131
  "openapi.requiredBadge": "required",
91
132
  "openapi.response": "Response",
133
+ "openapi.responseBodyEmpty": "The response body is empty.",
134
+ "openapi.responseBodyEmptyTitle": "No response content",
135
+ "openapi.responseEmpty": "Send the request to inspect the response.",
136
+ "openapi.responseEmptyTitle": "Ready for a request",
137
+ "openapi.responseErrorTitle": "Request failed",
92
138
  "openapi.responses": "Responses",
93
139
  "openapi.schemaExample": "Schema example",
140
+ "openapi.sendRequest": "Send",
141
+ "openapi.sendingRequest": "Sending",
142
+ "openapi.server": "Server",
94
143
  "openapi.scrollExamplesLeft": "Scroll examples left",
95
144
  "openapi.scrollExamplesRight": "Scroll examples right",
96
145
  "openapi.specNotFound": "OpenAPI spec not found: {specPath}",
97
146
  "openapi.specPathMissing": "spec or specPath was not provided",
98
147
  "openapi.status": "Status",
148
+ "openapi.tryRequest": "Try request",
99
149
  "openapi.version": "Version {version}",
100
150
  "openapi.webhookResponse": "Webhook response",
101
151
  "openapi.webhookResponses": "Webhook responses",
@@ -126,7 +176,9 @@ var builtInText = {
126
176
  "zh-CN": {
127
177
  "actions.code": "代码",
128
178
  "actions.copy": "复制",
179
+ "actions.copying": "正在复制...",
129
180
  "actions.copied": "已复制!",
181
+ "actions.copyFailed": "复制失败",
130
182
  "builtWith.label": "由 Clarify 构建",
131
183
  "builtWith.prefix": "构建来自",
132
184
  "callout.danger": "危险",
@@ -168,37 +220,85 @@ var builtInText = {
168
220
  "notFound.label": "404",
169
221
  "notFound.title": "页面未找到",
170
222
  "openapi.apiDocumentation": "API 文档",
223
+ "openapi.authentication": "认证方式",
171
224
  "openapi.bodyProperties": "请求体属性",
172
225
  "openapi.collapse": "收起",
226
+ "openapi.clear": "清除",
227
+ "openapi.codeSnippet": "代码示例",
173
228
  "openapi.endpointNotFound": "未找到端点:{endpoint}",
174
229
  "openapi.example": "示例",
175
230
  "openapi.expand": "展开",
176
231
  "openapi.headers": "请求头",
232
+ "openapi.headerName": "名称",
233
+ "openapi.headerValue": "值",
234
+ "openapi.headerParameters": "请求头参数",
235
+ "openapi.fieldDescription": "字段说明",
236
+ "openapi.includeParameter": "传递参数",
237
+ "openapi.cookieParameters": "Cookie 参数",
238
+ "openapi.cookieParametersBrowserManaged": "Cookie 由浏览器管理;当服务端允许携带凭据时,匹配的 Cookie 会随请求发送。",
239
+ "openapi.cookies": "Cookies",
240
+ "openapi.cookiesBrowserHidden": "Cookie 由浏览器管理,JavaScript 无法读取 Set-Cookie 的值。",
177
241
  "openapi.language": "语言",
178
242
  "openapi.client": "客户端",
243
+ "openapi.closeRequest": "关闭请求测试器",
244
+ "openapi.credential": "认证凭证",
179
245
  "openapi.loading": "正在加载 OpenAPI 描述文件...",
180
246
  "openapi.mediaType": "媒体类型",
181
247
  "openapi.none": "无",
248
+ "openapi.noRequestConfiguration": "此请求没有参数、认证、变量或请求体,可以直接发送。",
182
249
  "openapi.openApiReference": "OpenAPI 参考",
183
250
  "openapi.operationParameter": "操作参数。",
184
251
  "openapi.optional": "可选。",
185
252
  "openapi.parameter": "参数",
253
+ "openapi.parameterInvalidArray": "请输入有效的 JSON 数组。",
254
+ "openapi.parameterInvalidDate": "请输入有效日期。",
255
+ "openapi.parameterInvalidDateTime": "请输入有效的日期和时间。",
256
+ "openapi.parameterInvalidEnum": "请选择允许的值。",
257
+ "openapi.parameterInvalidInteger": "请输入整数。",
258
+ "openapi.parameterInvalidNumber": "请输入有效数字。",
259
+ "openapi.parameterInvalidObject": "请输入有效的 JSON 对象。",
186
260
  "openapi.pathParameters": "路径参数",
187
261
  "openapi.queryParameters": "查询参数",
262
+ "openapi.preview": "预览",
263
+ "openapi.raw": "原始内容",
264
+ "openapi.resetToExample": "重置为示例",
265
+ "openapi.body": "响应体",
266
+ "openapi.binaryPreview": "暂不支持预览二进制响应。",
267
+ "openapi.downloadBody": "下载响应体",
268
+ "openapi.noHeaders": "没有匹配当前搜索的响应头。",
269
+ "openapi.responseViews": "响应视图",
270
+ "openapi.responseUrl": "最终 URL",
271
+ "openapi.redirected": "已重定向",
272
+ "openapi.searchHeaders": "搜索响应头",
273
+ "openapi.unknownContentType": "未知内容类型",
274
+ "openapi.variables": "变量",
275
+ "openapi.requestConfiguration": "请求配置",
276
+ "openapi.requestHeaders": "请求头",
188
277
  "openapi.request": "请求",
189
278
  "openapi.requestBody": "请求体",
190
279
  "openapi.requestBodyEmpty": "暂无请求体",
280
+ "openapi.requestCorsHint": "受目标 API 的网络或 CORS 策略影响,浏览器可能无法直接访问",
191
281
  "openapi.responseBodyProperties": "响应体属性",
282
+ "openapi.responseHeaders": "响应头",
192
283
  "openapi.required": "必填。",
193
284
  "openapi.requiredBadge": "必填",
194
285
  "openapi.response": "响应",
286
+ "openapi.responseBodyEmpty": "响应体为空。",
287
+ "openapi.responseBodyEmptyTitle": "无响应内容",
288
+ "openapi.responseEmpty": "发送请求后在这里查看响应。",
289
+ "openapi.responseEmptyTitle": "等待发送请求",
290
+ "openapi.responseErrorTitle": "请求失败",
195
291
  "openapi.responses": "响应",
196
292
  "openapi.schemaExample": "Schema 示例",
293
+ "openapi.sendRequest": "发送",
294
+ "openapi.sendingRequest": "发送中",
295
+ "openapi.server": "服务地址",
197
296
  "openapi.scrollExamplesLeft": "向左滚动示例",
198
297
  "openapi.scrollExamplesRight": "向右滚动示例",
199
298
  "openapi.specNotFound": "未找到 OpenAPI 描述文件:{specPath}",
200
299
  "openapi.specPathMissing": "未提供 spec 或 specPath",
201
300
  "openapi.status": "状态",
301
+ "openapi.tryRequest": "发起测试请求",
202
302
  "openapi.version": "版本 {version}",
203
303
  "openapi.webhookResponse": "Webhook 响应",
204
304
  "openapi.webhookResponses": "Webhook 响应",
@@ -238,7 +338,7 @@ function translateBuiltInText(locale, key, replacements = {}) {
238
338
  function useBuiltInText(locale) {
239
339
  const config = (0, react.useContext)(ConfigContext);
240
340
  const currentLocale = (0, react.useContext)(LocaleContext);
241
- const resolvedLocale = locale ?? currentLocale ?? config?.i18n?.defaultLocale;
341
+ const resolvedLocale = locale ?? currentLocale ?? config?.locales?.default;
242
342
  return (key, replacements) => translateBuiltInText(resolvedLocale, key, replacements);
243
343
  }
244
344
  //#endregion
@@ -291,4 +391,4 @@ Object.defineProperty(exports, "useOpenApiSpecs", {
291
391
  }
292
392
  });
293
393
 
294
- //# sourceMappingURL=i18n-b4iTLeia.cjs.map
394
+ //# sourceMappingURL=i18n-wXINKKV0.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-wXINKKV0.cjs","names":[],"sources":["../source/core/context.tsx","../source/core/i18n.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\nimport type { Config, OpenApiRegistry } from './types'\n\nexport const ConfigContext = createContext<Config | null>(null)\nexport const LocaleContext = createContext<string | undefined>(undefined)\nexport const OpenApiSpecsContext = createContext<OpenApiRegistry>({})\n\nexport function useConfig(): Config {\n const config = useContext(ConfigContext)\n if (!config) {\n throw new Error(\n '[clarify] useConfig must be used within a ConfigContext.Provider'\n )\n }\n return config\n}\n\nexport function useConfigOptional(): Config | null {\n return useContext(ConfigContext)\n}\n\nexport function useLocale(): string | undefined {\n return useContext(LocaleContext)\n}\n\nexport function useOpenApiSpecs(): OpenApiRegistry {\n return useContext(OpenApiSpecsContext)\n}\n","import { useContext } from 'react'\n\nimport { ConfigContext, LocaleContext } from './context'\n\nexport type BuiltInLocale = 'en' | 'zh-CN'\n\nexport type BuiltInTextKey =\n | 'actions.code'\n | 'actions.copy'\n | 'actions.copying'\n | 'actions.copied'\n | 'actions.copyFailed'\n | 'builtWith.label'\n | 'builtWith.prefix'\n | 'callout.danger'\n | 'callout.info'\n | 'callout.note'\n | 'callout.success'\n | 'callout.tip'\n | 'callout.warning'\n | 'contentActions.copyContent'\n | 'contentActions.copyContentDescription'\n | 'contentActions.copyLink'\n | 'contentActions.copyLinkDescription'\n | 'contentActions.copyLlms'\n | 'contentActions.copyLlmsDescription'\n | 'contentActions.copiedLlms'\n | 'contentActions.editPage'\n | 'contentActions.editPageDescription'\n | 'contentActions.copyOptions'\n | 'contentActions.copiedContent'\n | 'contentActions.copiedLink'\n | 'contentActions.viewMarkdown'\n | 'contentActions.viewMarkdownDescription'\n | 'contentActions.viewOpenApi'\n | 'contentActions.viewOpenApiDescription'\n | 'feedback.no'\n | 'feedback.prompt'\n | 'feedback.thanks'\n | 'feedback.yes'\n | 'navigation.documentation'\n | 'navigation.next'\n | 'navigation.previous'\n | 'navigation.previousNext'\n | 'navigation.toggle'\n | 'navbar.home'\n | 'navbar.openLinks'\n | 'navbar.sections'\n | 'notFound.description'\n | 'notFound.home'\n | 'notFound.label'\n | 'notFound.title'\n | 'openapi.apiDocumentation'\n | 'openapi.authentication'\n | 'openapi.bodyProperties'\n | 'openapi.collapse'\n | 'openapi.clear'\n | 'openapi.codeSnippet'\n | 'openapi.endpointNotFound'\n | 'openapi.example'\n | 'openapi.expand'\n | 'openapi.headers'\n | 'openapi.headerName'\n | 'openapi.headerValue'\n | 'openapi.headerParameters'\n | 'openapi.fieldDescription'\n | 'openapi.includeParameter'\n | 'openapi.cookieParameters'\n | 'openapi.cookieParametersBrowserManaged'\n | 'openapi.cookies'\n | 'openapi.cookiesBrowserHidden'\n | 'openapi.language'\n | 'openapi.client'\n | 'openapi.closeRequest'\n | 'openapi.credential'\n | 'openapi.loading'\n | 'openapi.mediaType'\n | 'openapi.none'\n | 'openapi.noRequestConfiguration'\n | 'openapi.openApiReference'\n | 'openapi.operationParameter'\n | 'openapi.optional'\n | 'openapi.parameter'\n | 'openapi.parameterInvalidArray'\n | 'openapi.parameterInvalidDate'\n | 'openapi.parameterInvalidDateTime'\n | 'openapi.parameterInvalidEnum'\n | 'openapi.parameterInvalidInteger'\n | 'openapi.parameterInvalidNumber'\n | 'openapi.parameterInvalidObject'\n | 'openapi.pathParameters'\n | 'openapi.queryParameters'\n | 'openapi.preview'\n | 'openapi.raw'\n | 'openapi.resetToExample'\n | 'openapi.body'\n | 'openapi.binaryPreview'\n | 'openapi.downloadBody'\n | 'openapi.noHeaders'\n | 'openapi.responseViews'\n | 'openapi.responseUrl'\n | 'openapi.redirected'\n | 'openapi.searchHeaders'\n | 'openapi.unknownContentType'\n | 'openapi.variables'\n | 'openapi.requestConfiguration'\n | 'openapi.requestHeaders'\n | 'openapi.request'\n | 'openapi.requestBody'\n | 'openapi.requestBodyEmpty'\n | 'openapi.requestCorsHint'\n | 'openapi.responseBodyProperties'\n | 'openapi.responseHeaders'\n | 'openapi.required'\n | 'openapi.requiredBadge'\n | 'openapi.response'\n | 'openapi.responseBodyEmpty'\n | 'openapi.responseBodyEmptyTitle'\n | 'openapi.responseEmpty'\n | 'openapi.responseEmptyTitle'\n | 'openapi.responseErrorTitle'\n | 'openapi.responses'\n | 'openapi.schemaExample'\n | 'openapi.sendRequest'\n | 'openapi.sendingRequest'\n | 'openapi.server'\n | 'openapi.scrollExamplesLeft'\n | 'openapi.scrollExamplesRight'\n | 'openapi.specNotFound'\n | 'openapi.specPathMissing'\n | 'openapi.status'\n | 'openapi.tryRequest'\n | 'openapi.version'\n | 'openapi.webhookResponse'\n | 'openapi.webhookResponses'\n | 'search.button'\n | 'search.noResults'\n | 'search.placeholder'\n | 'search.shortcutCtrl'\n | 'renderError.componentStack'\n | 'renderError.description'\n | 'renderError.details'\n | 'renderError.message'\n | 'renderError.path'\n | 'renderError.reload'\n | 'renderError.stack'\n | 'renderError.title'\n | 'renderError.version'\n | 'renderError.type'\n | 'theme.switchToDark'\n | 'theme.switchToLight'\n | 'theme.switchToSystem'\n | 'language.switch'\n | 'mermaid.zoomIn'\n | 'mermaid.zoomOut'\n | 'mermaid.resetZoom'\n | 'mermaid.renderError'\n | 'mermaid.scrollHint'\n\nconst builtInText = {\n en: {\n 'actions.code': 'Code',\n 'actions.copy': 'Copy',\n 'actions.copying': 'Copying...',\n 'actions.copied': 'Copied!',\n 'actions.copyFailed': 'Copy failed',\n 'builtWith.label': 'Built with Clarify',\n 'builtWith.prefix': 'Built with',\n 'callout.danger': 'Danger',\n 'callout.info': 'Info',\n 'callout.note': 'Note',\n 'callout.success': 'Success',\n 'callout.tip': 'Tip',\n 'callout.warning': 'Warning',\n 'contentActions.copyContent': 'Copy page',\n 'contentActions.copyContentDescription': 'Copy this page as {contentType} for LLMs',\n 'contentActions.copyLink': 'Copy {contentType} link',\n 'contentActions.copyLinkDescription': 'Copy the raw {contentType} content link for this page',\n 'contentActions.copyLlms': 'Copy llms.txt',\n 'contentActions.copyLlmsDescription': 'Copy the llms.txt link for this site',\n 'contentActions.copiedLlms': 'Copied llms.txt',\n 'contentActions.editPage': 'Edit this page',\n 'contentActions.editPageDescription': 'Open the source file for this page',\n 'contentActions.copyOptions': 'Choose copy option',\n 'contentActions.copiedContent': 'Copied page',\n 'contentActions.copiedLink': 'Copied link',\n 'contentActions.viewMarkdown': 'View as Markdown',\n 'contentActions.viewMarkdownDescription': 'View this page as plain text',\n 'contentActions.viewOpenApi': 'View raw OpenAPI',\n 'contentActions.viewOpenApiDescription': 'Open the API description file in a new tab',\n 'feedback.no': 'No',\n 'feedback.prompt': 'Was this page helpful?',\n 'feedback.thanks': 'Thanks for your feedback!',\n 'feedback.yes': 'Yes',\n 'navigation.documentation': 'Documentation',\n 'navigation.next': 'Next',\n 'navigation.previous': 'Previous',\n 'navigation.previousNext': 'Previous and next pages',\n 'navigation.toggle': 'Toggle navigation',\n 'navbar.home': 'Home',\n 'navbar.openLinks': 'Open navigation links',\n 'navbar.sections': 'Documentation sections',\n 'notFound.description': 'The page may have moved, been renamed, or never existed. Check the address or return to the homepage.',\n 'notFound.home': 'Back to homepage',\n 'notFound.label': '404',\n 'notFound.title': 'Page not found',\n 'openapi.apiDocumentation': 'API Documentation',\n 'openapi.authentication': 'Authentication',\n 'openapi.bodyProperties': 'Body properties',\n 'openapi.collapse': 'Collapse',\n 'openapi.clear': 'Clear',\n 'openapi.codeSnippet': 'Code snippet',\n 'openapi.endpointNotFound': 'Endpoint not found: {endpoint}',\n 'openapi.example': 'Example',\n 'openapi.expand': 'Expand',\n 'openapi.headers': 'Headers',\n 'openapi.headerName': 'Name',\n 'openapi.headerValue': 'Value',\n 'openapi.headerParameters': 'Header parameters',\n 'openapi.fieldDescription': 'Field description',\n 'openapi.includeParameter': 'Include parameter',\n 'openapi.cookieParameters': 'Cookie parameters',\n 'openapi.cookieParametersBrowserManaged': 'Cookies are managed by the browser. Matching cookies are sent when the server allows credentialed requests.',\n 'openapi.cookies': 'Cookies',\n 'openapi.cookiesBrowserHidden': 'Cookies are managed by the browser. Set-Cookie values are not exposed to JavaScript.',\n 'openapi.language': 'Language',\n 'openapi.client': 'Client',\n 'openapi.closeRequest': 'Close request tester',\n 'openapi.credential': 'Credential',\n 'openapi.loading': 'Loading OpenAPI spec...',\n 'openapi.mediaType': 'Media type',\n 'openapi.none': 'None',\n 'openapi.noRequestConfiguration': 'This request has no parameters, authentication, variables, or request body. It is ready to send as-is.',\n 'openapi.openApiReference': 'OpenAPI Reference',\n 'openapi.operationParameter': 'Operation parameter.',\n 'openapi.optional': 'Optional.',\n 'openapi.parameter': 'parameter',\n 'openapi.parameterInvalidArray': 'Enter a valid JSON array.',\n 'openapi.parameterInvalidDate': 'Enter a valid date.',\n 'openapi.parameterInvalidDateTime': 'Enter a valid date and time.',\n 'openapi.parameterInvalidEnum': 'Select one of the allowed values.',\n 'openapi.parameterInvalidInteger': 'Enter a whole number.',\n 'openapi.parameterInvalidNumber': 'Enter a valid number.',\n 'openapi.parameterInvalidObject': 'Enter a valid JSON object.',\n 'openapi.pathParameters': 'Path parameters',\n 'openapi.queryParameters': 'Query parameters',\n 'openapi.preview': 'Preview',\n 'openapi.raw': 'Raw',\n 'openapi.resetToExample': 'Reset to example',\n 'openapi.body': 'Body',\n 'openapi.binaryPreview': 'Binary response preview is not available.',\n 'openapi.downloadBody': 'Download response body',\n 'openapi.noHeaders': 'No response headers match the current search.',\n 'openapi.responseViews': 'Response views',\n 'openapi.responseUrl': 'Final URL',\n 'openapi.redirected': 'Redirected',\n 'openapi.searchHeaders': 'Search response headers',\n 'openapi.unknownContentType': 'Unknown content type',\n 'openapi.variables': 'Variables',\n 'openapi.requestConfiguration': 'Request configuration',\n 'openapi.requestHeaders': 'Request headers',\n 'openapi.request': 'Request',\n 'openapi.requestBody': 'Request body',\n 'openapi.requestBodyEmpty': 'No request body',\n 'openapi.requestCorsHint': 'The API may be unavailable from this browser because of its network or CORS policy',\n 'openapi.responseBodyProperties': 'Response body properties',\n 'openapi.responseHeaders': 'Response headers',\n 'openapi.required': 'Required.',\n 'openapi.requiredBadge': 'required',\n 'openapi.response': 'Response',\n 'openapi.responseBodyEmpty': 'The response body is empty.',\n 'openapi.responseBodyEmptyTitle': 'No response content',\n 'openapi.responseEmpty': 'Send the request to inspect the response.',\n 'openapi.responseEmptyTitle': 'Ready for a request',\n 'openapi.responseErrorTitle': 'Request failed',\n 'openapi.responses': 'Responses',\n 'openapi.schemaExample': 'Schema example',\n 'openapi.sendRequest': 'Send',\n 'openapi.sendingRequest': 'Sending',\n 'openapi.server': 'Server',\n 'openapi.scrollExamplesLeft': 'Scroll examples left',\n 'openapi.scrollExamplesRight': 'Scroll examples right',\n 'openapi.specNotFound': 'OpenAPI spec not found: {specPath}',\n 'openapi.specPathMissing': 'spec or specPath was not provided',\n 'openapi.status': 'Status',\n 'openapi.tryRequest': 'Try request',\n 'openapi.version': 'Version {version}',\n 'openapi.webhookResponse': 'Webhook response',\n 'openapi.webhookResponses': 'Webhook responses',\n 'search.button': 'Search...',\n 'search.noResults': 'Nothing found for {query}.',\n 'search.placeholder': 'Find something...',\n 'search.shortcutCtrl': 'Ctrl ',\n 'renderError.componentStack': 'React component stack',\n 'renderError.description': 'Clarify stopped rendering this route to keep the rest of the shell responsive. Review the diagnostics below, fix the page source, then reload the route.',\n 'renderError.details': 'Runtime diagnostics',\n 'renderError.message': 'Message',\n 'renderError.path': 'Route',\n 'renderError.reload': 'Reload route',\n 'renderError.stack': 'JavaScript stack trace',\n 'renderError.title': 'Route render failed',\n 'renderError.type': 'Error type',\n 'renderError.version': 'Clarify version',\n 'theme.switchToDark': 'Switch to dark theme',\n 'theme.switchToLight': 'Switch to light theme',\n 'theme.switchToSystem': 'Follow system theme',\n 'language.switch': 'Switch language',\n 'mermaid.zoomIn': 'Zoom in',\n 'mermaid.zoomOut': 'Zoom out',\n 'mermaid.resetZoom': 'Reset zoom',\n 'mermaid.renderError': 'Mermaid render error',\n 'mermaid.scrollHint': 'Click the diagram to enable scroll-to-zoom',\n },\n 'zh-CN': {\n 'actions.code': '代码',\n 'actions.copy': '复制',\n 'actions.copying': '正在复制...',\n 'actions.copied': '已复制!',\n 'actions.copyFailed': '复制失败',\n 'builtWith.label': '由 Clarify 构建',\n 'builtWith.prefix': '构建来自',\n 'callout.danger': '危险',\n 'callout.info': '信息',\n 'callout.note': '注意',\n 'callout.success': '成功',\n 'callout.tip': '提示',\n 'callout.warning': '警告',\n 'contentActions.copyContent': '复制页面',\n 'contentActions.copyContentDescription': '将页面以 {contentType} 格式复制给 LLMs',\n 'contentActions.copyLink': '复制 {contentType} 链接',\n 'contentActions.copyLinkDescription': '复制当前页面的 {contentType} 原始内容链接',\n 'contentActions.copyLlms': '复制 llms.txt',\n 'contentActions.copyLlmsDescription': '复制此站点的 llms.txt 链接',\n 'contentActions.copiedLlms': '已复制 llms.txt',\n 'contentActions.editPage': '编辑此页面',\n 'contentActions.editPageDescription': '打开当前页面的源文件',\n 'contentActions.copyOptions': '选择复制选项',\n 'contentActions.copiedContent': '已复制页面',\n 'contentActions.copiedLink': '已复制链接',\n 'contentActions.viewMarkdown': '以 Markdown 格式查看',\n 'contentActions.viewMarkdownDescription': '以纯文本查看此页面',\n 'contentActions.viewOpenApi': '查看 OpenAPI 原始内容',\n 'contentActions.viewOpenApiDescription': '在新标签页打开 API 描述文件',\n 'feedback.no': '否',\n 'feedback.prompt': '这个页面有帮助吗?',\n 'feedback.thanks': '感谢你的反馈!',\n 'feedback.yes': '是',\n 'navigation.documentation': '文档',\n 'navigation.next': '下一页',\n 'navigation.previous': '上一页',\n 'navigation.previousNext': '上一页和下一页',\n 'navigation.toggle': '切换导航',\n 'navbar.home': '首页',\n 'navbar.openLinks': '打开导航链接',\n 'navbar.sections': '文档栏目',\n 'notFound.description': '页面可能已移动、重命名或不存在。请检查地址,或返回首页继续浏览。',\n 'notFound.home': '返回首页',\n 'notFound.label': '404',\n 'notFound.title': '页面未找到',\n 'openapi.apiDocumentation': 'API 文档',\n 'openapi.authentication': '认证方式',\n 'openapi.bodyProperties': '请求体属性',\n 'openapi.collapse': '收起',\n 'openapi.clear': '清除',\n 'openapi.codeSnippet': '代码示例',\n 'openapi.endpointNotFound': '未找到端点:{endpoint}',\n 'openapi.example': '示例',\n 'openapi.expand': '展开',\n 'openapi.headers': '请求头',\n 'openapi.headerName': '名称',\n 'openapi.headerValue': '值',\n 'openapi.headerParameters': '请求头参数',\n 'openapi.fieldDescription': '字段说明',\n 'openapi.includeParameter': '传递参数',\n 'openapi.cookieParameters': 'Cookie 参数',\n 'openapi.cookieParametersBrowserManaged': 'Cookie 由浏览器管理;当服务端允许携带凭据时,匹配的 Cookie 会随请求发送。',\n 'openapi.cookies': 'Cookies',\n 'openapi.cookiesBrowserHidden': 'Cookie 由浏览器管理,JavaScript 无法读取 Set-Cookie 的值。',\n 'openapi.language': '语言',\n 'openapi.client': '客户端',\n 'openapi.closeRequest': '关闭请求测试器',\n 'openapi.credential': '认证凭证',\n 'openapi.loading': '正在加载 OpenAPI 描述文件...',\n 'openapi.mediaType': '媒体类型',\n 'openapi.none': '无',\n 'openapi.noRequestConfiguration': '此请求没有参数、认证、变量或请求体,可以直接发送。',\n 'openapi.openApiReference': 'OpenAPI 参考',\n 'openapi.operationParameter': '操作参数。',\n 'openapi.optional': '可选。',\n 'openapi.parameter': '参数',\n 'openapi.parameterInvalidArray': '请输入有效的 JSON 数组。',\n 'openapi.parameterInvalidDate': '请输入有效日期。',\n 'openapi.parameterInvalidDateTime': '请输入有效的日期和时间。',\n 'openapi.parameterInvalidEnum': '请选择允许的值。',\n 'openapi.parameterInvalidInteger': '请输入整数。',\n 'openapi.parameterInvalidNumber': '请输入有效数字。',\n 'openapi.parameterInvalidObject': '请输入有效的 JSON 对象。',\n 'openapi.pathParameters': '路径参数',\n 'openapi.queryParameters': '查询参数',\n 'openapi.preview': '预览',\n 'openapi.raw': '原始内容',\n 'openapi.resetToExample': '重置为示例',\n 'openapi.body': '响应体',\n 'openapi.binaryPreview': '暂不支持预览二进制响应。',\n 'openapi.downloadBody': '下载响应体',\n 'openapi.noHeaders': '没有匹配当前搜索的响应头。',\n 'openapi.responseViews': '响应视图',\n 'openapi.responseUrl': '最终 URL',\n 'openapi.redirected': '已重定向',\n 'openapi.searchHeaders': '搜索响应头',\n 'openapi.unknownContentType': '未知内容类型',\n 'openapi.variables': '变量',\n 'openapi.requestConfiguration': '请求配置',\n 'openapi.requestHeaders': '请求头',\n 'openapi.request': '请求',\n 'openapi.requestBody': '请求体',\n 'openapi.requestBodyEmpty': '暂无请求体',\n 'openapi.requestCorsHint': '受目标 API 的网络或 CORS 策略影响,浏览器可能无法直接访问',\n 'openapi.responseBodyProperties': '响应体属性',\n 'openapi.responseHeaders': '响应头',\n 'openapi.required': '必填。',\n 'openapi.requiredBadge': '必填',\n 'openapi.response': '响应',\n 'openapi.responseBodyEmpty': '响应体为空。',\n 'openapi.responseBodyEmptyTitle': '无响应内容',\n 'openapi.responseEmpty': '发送请求后在这里查看响应。',\n 'openapi.responseEmptyTitle': '等待发送请求',\n 'openapi.responseErrorTitle': '请求失败',\n 'openapi.responses': '响应',\n 'openapi.schemaExample': 'Schema 示例',\n 'openapi.sendRequest': '发送',\n 'openapi.sendingRequest': '发送中',\n 'openapi.server': '服务地址',\n 'openapi.scrollExamplesLeft': '向左滚动示例',\n 'openapi.scrollExamplesRight': '向右滚动示例',\n 'openapi.specNotFound': '未找到 OpenAPI 描述文件:{specPath}',\n 'openapi.specPathMissing': '未提供 spec 或 specPath',\n 'openapi.status': '状态',\n 'openapi.tryRequest': '发起测试请求',\n 'openapi.version': '版本 {version}',\n 'openapi.webhookResponse': 'Webhook 响应',\n 'openapi.webhookResponses': 'Webhook 响应',\n 'search.button': '搜索...',\n 'search.noResults': '没有找到与 {query} 相关的结果。',\n 'search.placeholder': '搜索内容...',\n 'search.shortcutCtrl': 'Ctrl ',\n 'renderError.componentStack': 'React 组件栈',\n 'renderError.description': 'Clarify 已停止渲染此路由,以保证文档 Shell 仍可响应。请查看下方诊断信息,修复页面源码后重新加载路由。',\n 'renderError.details': '运行时诊断',\n 'renderError.message': '错误消息',\n 'renderError.path': '路由',\n 'renderError.reload': '重新加载路由',\n 'renderError.stack': 'JavaScript 堆栈',\n 'renderError.title': '路由渲染失败',\n 'renderError.type': '错误类型',\n 'renderError.version': 'Clarify 版本',\n 'theme.switchToDark': '切换到深色主题',\n 'theme.switchToLight': '切换到浅色主题',\n 'theme.switchToSystem': '跟随系统主题',\n 'language.switch': '切换语言',\n 'mermaid.zoomIn': '放大',\n 'mermaid.zoomOut': '缩小',\n 'mermaid.resetZoom': '重置缩放',\n 'mermaid.renderError': 'Mermaid 渲染错误',\n 'mermaid.scrollHint': '点击图表后即可滚轮缩放',\n },\n} satisfies Record<BuiltInLocale, Record<BuiltInTextKey, string>>\n\nexport function resolveBuiltInLocale(locale?: string): BuiltInLocale {\n return locale === 'zh-CN' || locale?.toLowerCase().startsWith('zh') ? 'zh-CN' : 'en'\n}\n\nexport function translateBuiltInText(locale: string | undefined, key: BuiltInTextKey, replacements: Record<string, string> = {}): string {\n let value = builtInText[resolveBuiltInLocale(locale)]?.[key] ?? builtInText.en[key]\n for (const [name, replacement] of Object.entries(replacements)) {\n value = value.replaceAll(`{${name}}`, replacement)\n }\n return value\n}\n\nexport function useBuiltInText(locale?: string) {\n const config = useContext(ConfigContext)\n const currentLocale = useContext(LocaleContext)\n const resolvedLocale = locale ?? currentLocale ?? config?.locales?.default\n return (key: BuiltInTextKey, replacements?: Record<string, string>) => translateBuiltInText(resolvedLocale, key, replacements)\n}\n"],"mappings":";;AAIA,IAAa,iBAAA,GAAA,MAAA,cAAA,CAA6C,IAAI;AAC9D,IAAa,iBAAA,GAAA,MAAA,cAAA,CAAkD,KAAA,CAAS;AACxE,IAAa,uBAAA,GAAA,MAAA,cAAA,CAAqD,CAAC,CAAC;AAEpE,SAAgB,YAAoB;CAClC,MAAM,UAAA,GAAA,MAAA,WAAA,CAAoB,aAAa;CACvC,IAAI,CAAC,QACH,MAAM,IAAI,MACR,kEACF;CAEF,OAAO;AACT;AAEA,SAAgB,oBAAmC;CACjD,QAAA,GAAA,MAAA,WAAA,CAAkB,aAAa;AACjC;AAEA,SAAgB,YAAgC;CAC9C,QAAA,GAAA,MAAA,WAAA,CAAkB,aAAa;AACjC;AAEA,SAAgB,kBAAmC;CACjD,QAAA,GAAA,MAAA,WAAA,CAAkB,mBAAmB;AACvC;;;ACmIA,IAAM,cAAc;CAClB,IAAI;EACF,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;EACnB,kBAAkB;EAClB,sBAAsB;EACtB,mBAAmB;EACnB,oBAAoB;EACpB,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,mBAAmB;EACnB,8BAA8B;EAC9B,yCAAyC;EACzC,2BAA2B;EAC3B,sCAAsC;EACtC,2BAA2B;EAC3B,sCAAsC;EACtC,6BAA6B;EAC7B,2BAA2B;EAC3B,sCAAsC;EACtC,8BAA8B;EAC9B,gCAAgC;EAChC,6BAA6B;EAC7B,+BAA+B;EAC/B,0CAA0C;EAC1C,8BAA8B;EAC9B,yCAAyC;EACzC,eAAe;EACf,mBAAmB;EACnB,mBAAmB;EACnB,gBAAgB;EAChB,4BAA4B;EAC5B,mBAAmB;EACnB,uBAAuB;EACvB,2BAA2B;EAC3B,qBAAqB;EACrB,eAAe;EACf,oBAAoB;EACpB,mBAAmB;EACnB,wBAAwB;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,kBAAkB;EAClB,4BAA4B;EAC5B,0BAA0B;EAC1B,0BAA0B;EAC1B,oBAAoB;EACpB,iBAAiB;EACjB,uBAAuB;EACvB,4BAA4B;EAC5B,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,4BAA4B;EAC5B,4BAA4B;EAC5B,4BAA4B;EAC5B,4BAA4B;EAC5B,0CAA0C;EAC1C,mBAAmB;EACnB,gCAAgC;EAChC,oBAAoB;EACpB,kBAAkB;EAClB,wBAAwB;EACxB,sBAAsB;EACtB,mBAAmB;EACnB,qBAAqB;EACrB,gBAAgB;EAChB,kCAAkC;EAClC,4BAA4B;EAC5B,8BAA8B;EAC9B,oBAAoB;EACpB,qBAAqB;EACrB,iCAAiC;EACjC,gCAAgC;EAChC,oCAAoC;EACpC,gCAAgC;EAChC,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,0BAA0B;EAC1B,2BAA2B;EAC3B,mBAAmB;EACnB,eAAe;EACf,0BAA0B;EAC1B,gBAAgB;EAChB,yBAAyB;EACzB,wBAAwB;EACxB,qBAAqB;EACrB,yBAAyB;EACzB,uBAAuB;EACvB,sBAAsB;EACtB,yBAAyB;EACzB,8BAA8B;EAC9B,qBAAqB;EACrB,gCAAgC;EAChC,0BAA0B;EAC1B,mBAAmB;EACnB,uBAAuB;EACvB,4BAA4B;EAC5B,2BAA2B;EAC3B,kCAAkC;EAClC,2BAA2B;EAC3B,oBAAoB;EACpB,yBAAyB;EACzB,oBAAoB;EACpB,6BAA6B;EAC7B,kCAAkC;EAClC,yBAAyB;EACzB,8BAA8B;EAC9B,8BAA8B;EAC9B,qBAAqB;EACrB,yBAAyB;EACzB,uBAAuB;EACvB,0BAA0B;EAC1B,kBAAkB;EAClB,8BAA8B;EAC9B,+BAA+B;EAC/B,wBAAwB;EACxB,2BAA2B;EAC3B,kBAAkB;EAClB,sBAAsB;EACtB,mBAAmB;EACnB,2BAA2B;EAC3B,4BAA4B;EAC5B,iBAAiB;EACjB,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,8BAA8B;EAC9B,2BAA2B;EAC3B,uBAAuB;EACvB,uBAAuB;EACvB,oBAAoB;EACpB,sBAAsB;EACtB,qBAAqB;EACrB,qBAAqB;EACrB,oBAAoB;EACpB,uBAAuB;EACvB,sBAAsB;EACtB,uBAAuB;EACvB,wBAAwB;EACxB,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,qBAAqB;EACrB,uBAAuB;EACvB,sBAAsB;CACxB;CACA,SAAS;EACP,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;EACnB,kBAAkB;EAClB,sBAAsB;EACtB,mBAAmB;EACnB,oBAAoB;EACpB,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,mBAAmB;EACnB,8BAA8B;EAC9B,yCAAyC;EACzC,2BAA2B;EAC3B,sCAAsC;EACtC,2BAA2B;EAC3B,sCAAsC;EACtC,6BAA6B;EAC7B,2BAA2B;EAC3B,sCAAsC;EACtC,8BAA8B;EAC9B,gCAAgC;EAChC,6BAA6B;EAC7B,+BAA+B;EAC/B,0CAA0C;EAC1C,8BAA8B;EAC9B,yCAAyC;EACzC,eAAe;EACf,mBAAmB;EACnB,mBAAmB;EACnB,gBAAgB;EAChB,4BAA4B;EAC5B,mBAAmB;EACnB,uBAAuB;EACvB,2BAA2B;EAC3B,qBAAqB;EACrB,eAAe;EACf,oBAAoB;EACpB,mBAAmB;EACnB,wBAAwB;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,kBAAkB;EAClB,4BAA4B;EAC5B,0BAA0B;EAC1B,0BAA0B;EAC1B,oBAAoB;EACpB,iBAAiB;EACjB,uBAAuB;EACvB,4BAA4B;EAC5B,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,4BAA4B;EAC5B,4BAA4B;EAC5B,4BAA4B;EAC5B,4BAA4B;EAC5B,0CAA0C;EAC1C,mBAAmB;EACnB,gCAAgC;EAChC,oBAAoB;EACpB,kBAAkB;EAClB,wBAAwB;EACxB,sBAAsB;EACtB,mBAAmB;EACnB,qBAAqB;EACrB,gBAAgB;EAChB,kCAAkC;EAClC,4BAA4B;EAC5B,8BAA8B;EAC9B,oBAAoB;EACpB,qBAAqB;EACrB,iCAAiC;EACjC,gCAAgC;EAChC,oCAAoC;EACpC,gCAAgC;EAChC,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,0BAA0B;EAC1B,2BAA2B;EAC3B,mBAAmB;EACnB,eAAe;EACf,0BAA0B;EAC1B,gBAAgB;EAChB,yBAAyB;EACzB,wBAAwB;EACxB,qBAAqB;EACrB,yBAAyB;EACzB,uBAAuB;EACvB,sBAAsB;EACtB,yBAAyB;EACzB,8BAA8B;EAC9B,qBAAqB;EACrB,gCAAgC;EAChC,0BAA0B;EAC1B,mBAAmB;EACnB,uBAAuB;EACvB,4BAA4B;EAC5B,2BAA2B;EAC3B,kCAAkC;EAClC,2BAA2B;EAC3B,oBAAoB;EACpB,yBAAyB;EACzB,oBAAoB;EACpB,6BAA6B;EAC7B,kCAAkC;EAClC,yBAAyB;EACzB,8BAA8B;EAC9B,8BAA8B;EAC9B,qBAAqB;EACrB,yBAAyB;EACzB,uBAAuB;EACvB,0BAA0B;EAC1B,kBAAkB;EAClB,8BAA8B;EAC9B,+BAA+B;EAC/B,wBAAwB;EACxB,2BAA2B;EAC3B,kBAAkB;EAClB,sBAAsB;EACtB,mBAAmB;EACnB,2BAA2B;EAC3B,4BAA4B;EAC5B,iBAAiB;EACjB,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,8BAA8B;EAC9B,2BAA2B;EAC3B,uBAAuB;EACvB,uBAAuB;EACvB,oBAAoB;EACpB,sBAAsB;EACtB,qBAAqB;EACrB,qBAAqB;EACrB,oBAAoB;EACpB,uBAAuB;EACvB,sBAAsB;EACtB,uBAAuB;EACvB,wBAAwB;EACxB,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,qBAAqB;EACrB,uBAAuB;EACvB,sBAAsB;CACxB;AACF;AAEA,SAAgB,qBAAqB,QAAgC;CACnE,OAAO,WAAW,WAAW,QAAQ,YAAY,CAAC,CAAC,WAAW,IAAI,IAAI,UAAU;AAClF;AAEA,SAAgB,qBAAqB,QAA4B,KAAqB,eAAuC,CAAC,GAAW;CACvI,IAAI,QAAQ,YAAY,qBAAqB,MAAM,EAAE,GAAG,QAAQ,YAAY,GAAG;CAC/E,KAAK,MAAM,CAAC,MAAM,gBAAgB,OAAO,QAAQ,YAAY,GAC3D,QAAQ,MAAM,WAAW,IAAI,KAAK,IAAI,WAAW;CAEnD,OAAO;AACT;AAEA,SAAgB,eAAe,QAAiB;CAC9C,MAAM,UAAA,GAAA,MAAA,WAAA,CAAoB,aAAa;CACvC,MAAM,iBAAA,GAAA,MAAA,WAAA,CAA2B,aAAa;CAC9C,MAAM,iBAAiB,UAAU,iBAAiB,QAAQ,SAAS;CACnE,QAAQ,KAAqB,iBAA0C,qBAAqB,gBAAgB,KAAK,YAAY;AAC/H"}
package/output/index.cjs CHANGED
@@ -1,18 +1,23 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_i18n = require("./i18n-b4iTLeia.cjs");
3
- const require_ClarifyShell = require("./ClarifyShell-C6li72Ce.cjs");
4
- const require_PageActions = require("./PageActions-BjB6PYmL.cjs");
5
- const require_OpenApiOperation = require("./OpenApiOperation-B52IWlKb.cjs");
2
+ const require_i18n = require("./i18n-wXINKKV0.cjs");
3
+ const require_ClarifyShell = require("./ClarifyShell-BAjq876Z.cjs");
4
+ const require_PageActions = require("./PageActions-DJRXlGhz.cjs");
5
+ const require_OpenApiOperation = require("./OpenApiOperation-D-5uE5v7.cjs");
6
6
  const require_remark = require("./remark-DTLbG8PK.cjs");
7
- const require_render = require("./render-Di5B6Zc0.cjs");
7
+ const require_render = require("./render-FICIzeXz.cjs");
8
8
  let react = require("react");
9
9
  let react_router_dom = require("react-router-dom");
10
10
  let react_jsx_runtime = require("react/jsx-runtime");
11
11
  //#region source/app/ContentDiagnostic.tsx
12
12
  function ContentDiagnosticPanel(params) {
13
13
  const { data } = params;
14
- const typeLabel = data.kind === "mdx" ? "MDX" : data.kind === "openapi" ? "OpenAPI" : "Route";
15
- const detailsLabel = data.kind === "mdx" ? "Why it happened" : "Details";
14
+ const typeLabel = {
15
+ markdown: "Markdown",
16
+ mdx: "MDX",
17
+ openapi: "OpenAPI",
18
+ "route-load": "Route"
19
+ }[data.kind];
20
+ const detailsLabel = data.kind === "mdx" || data.kind === "markdown" ? "Why it happened" : "Details";
16
21
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ClarifyShell.RenderErrorPanel, {
17
22
  title: data.title,
18
23
  description: data.message,
@@ -157,7 +162,7 @@ function operationMatchesTags(operationTags, filterTags) {
157
162
  function OpenApiPaths(arg0) {
158
163
  const { spec, tagFilter } = arg0;
159
164
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
160
- className: "clarify-api-endpoints divide-y divide-zinc-200/70 dark:divide-white/10",
165
+ className: "clarify-openai-endpoints divide-y divide-zinc-200/70 dark:divide-white/10",
161
166
  children: require_OpenApiOperation.listOpenApiOperations(spec).filter(({ operation }) => operationMatchesTags(operation.tags, tagFilter)).map(({ path, method, operation, source }) => ({
162
167
  path,
163
168
  method: method.toUpperCase(),
@@ -225,6 +230,25 @@ function OpenApiOperation(arg0) {
225
230
  method
226
231
  });
227
232
  }
233
+ function OpenApiRequest(arg0) {
234
+ const { specPath, path, method } = arg0;
235
+ const t = require_i18n.useBuiltInText();
236
+ const { spec, loading } = useOpenApiSpec(void 0, specPath);
237
+ if (loading) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WarningBox, { children: t("openapi.loading") });
238
+ if (!spec) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WarningBox, { children: t("openapi.specNotFound", { specPath }) });
239
+ const entry = require_OpenApiOperation.getOpenApiOperationEntry(spec, path, method);
240
+ if (!entry) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WarningBox, {
241
+ tone: "red",
242
+ children: t("openapi.endpointNotFound", { endpoint: `${method.toUpperCase()} ${path}` })
243
+ });
244
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_OpenApiOperation.OpenApiRequestWorkbench, {
245
+ spec,
246
+ path,
247
+ method: entry.method.toUpperCase(),
248
+ operation: entry.operation,
249
+ operationSource: entry.source
250
+ });
251
+ }
228
252
  function createOpenApiRouteComponent(data) {
229
253
  return function OpenApiRoutePage() {
230
254
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OpenApiDocument, { spec: data.spec });
@@ -239,6 +263,7 @@ var builtInMDXComponents = {
239
263
  Mermaid: require_OpenApiOperation.Mermaid
240
264
  };
241
265
  var builtInOpenAPIComponents = {
266
+ OpenApiRequest,
242
267
  OpenApiDocument,
243
268
  OpenApiOperation
244
269
  };
@@ -290,6 +315,7 @@ exports.Markdown = require_OpenApiOperation.Markdown;
290
315
  exports.Mermaid = require_OpenApiOperation.Mermaid;
291
316
  exports.OpenApiDocument = OpenApiDocument;
292
317
  exports.OpenApiOperation = OpenApiOperation;
318
+ exports.OpenApiRequest = OpenApiRequest;
293
319
  exports.OpenApiSpecsContext = require_i18n.OpenApiSpecsContext;
294
320
  exports.PageBanner = require_ClarifyShell.PageBanner;
295
321
  exports.PageFooter = require_ClarifyShell.PageFooter;
@@ -299,6 +325,10 @@ exports.RuntimeSlot = require_ClarifyShell.RuntimeSlot;
299
325
  exports.RuntimeSlotsProvider = require_ClarifyShell.RuntimeSlotsProvider;
300
326
  exports.SectionProvider = require_PageActions.SectionProvider;
301
327
  exports.SlotProvider = require_ClarifyShell.SlotProvider;
328
+ exports.Step = require_OpenApiOperation.Step;
329
+ exports.Steps = require_OpenApiOperation.Steps;
330
+ exports.Tab = require_OpenApiOperation.TabItem;
331
+ exports.Tabs = require_OpenApiOperation.Tabs;
302
332
  exports.Tag = require_OpenApiOperation.Tag;
303
333
  exports.ThemeEditor = require_ClarifyShell.ThemeEditor;
304
334
  exports.ThemeProvider = require_PageActions.ThemeProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../source/app/ContentDiagnostic.tsx","../source/openapi/lib/spec-path.ts","../source/openapi/entry.tsx","../source/mdx/components.ts","../source/mdx/DocShell.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\n\nimport { RenderErrorPanel } from './RenderErrorPanel'\n\nexport type ContentDiagnostic = {\n kind: string\n title: string\n message: string\n details?: string\n filePath?: string\n}\n\ntype ContentDiagnosticPanelProps = {\n data: ContentDiagnostic\n}\n\nfunction ContentDiagnosticPanel(params: ContentDiagnosticPanelProps) {\n const { data } = params\n const typeLabel = data.kind === 'mdx' ? 'MDX' : data.kind === 'openapi' ? 'OpenAPI' : 'Route'\n const detailsLabel = data.kind === 'mdx' ? 'Why it happened' : 'Details'\n const pathLabel = 'File'\n\n return (\n <RenderErrorPanel\n title={data.title}\n description={data.message}\n titleId=\"clarify-content-diagnostic-title\"\n metadata={[\n { label: pathLabel, value: data.filePath ?? 'Unknown' },\n { label: 'Type', value: typeLabel },\n ]}\n detailsLabel={detailsLabel}\n detailsContent={data.details ? (\n <pre className=\"max-h-(--clarify-error-details-max-height) overflow-auto whitespace-pre-wrap wrap-break-word font-mono\">\n {data.details}\n </pre>\n ) : null}\n />\n )\n}\n\nexport function createContentDiagnosticComponent(data: ContentDiagnostic): ComponentType {\n return function ContentDiagnosticComponent() {\n return <ContentDiagnosticPanel data={data} />\n }\n}\n","import { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { useConfig, useLocale, useOpenApiSpecs } from '../../core/context'\n\nimport type { OpenAPISpec } from './utils'\n\ntype OpenApiSpecResult = {\n spec: OpenAPISpec | null\n loading: boolean\n}\n\ntype OpenApiSpecModule = { default: OpenAPISpec } | OpenAPISpec\n\ntype LoadedSpecState = {\n loader?: () => Promise<OpenApiSpecModule>\n spec: OpenAPISpec | null\n}\n\nfunction isOpenApiSpecLoader(value: unknown): value is () => Promise<OpenApiSpecModule> {\n return typeof value === 'function'\n}\n\nfunction getLoadedSpec(value: OpenApiSpecModule): OpenAPISpec {\n return value && typeof value === 'object' && 'default' in value\n ? value.default\n : value\n}\n\nconst VIRTUAL_PREFIX = 'virtual:clarify-page/'\n\nfunction resolveRelativePath(fromDir: string, to: string): string {\n const parts = (fromDir + '/' + to).split('/').filter(Boolean)\n const stack: string[] = []\n for (const part of parts) {\n if (part === '..') {\n stack.pop()\n } else if (part !== '.') {\n stack.push(part)\n }\n }\n return stack.join('/')\n}\n\nfunction normalizeSpecPath(specPath: string, currentRoutePath?: string, routePrefix = ''): string {\n if (specPath.startsWith(VIRTUAL_PREFIX)) return specPath\n\n const normalizedRoutePrefix = routePrefix.replace(/^\\/+|\\/+$/g, '')\n const normalizedSpecPath = specPath.startsWith('/') && normalizedRoutePrefix && specPath.slice(1).startsWith(`${normalizedRoutePrefix}/`)\n ? '/' + specPath.slice(normalizedRoutePrefix.length + 2)\n : specPath\n\n if (normalizedSpecPath.startsWith('/')) {\n return VIRTUAL_PREFIX + normalizedSpecPath.replace(/^\\//, '')\n }\n const fromDir = currentRoutePath === '/' ? '' : currentRoutePath?.replace(/^\\//, '').replace(/\\/[^/]*$/, '') ?? ''\n const normalizedFromDir = normalizedRoutePrefix && fromDir.startsWith(`${normalizedRoutePrefix}/`)\n ? fromDir.slice(normalizedRoutePrefix.length + 1)\n : fromDir\n return VIRTUAL_PREFIX + resolveRelativePath(normalizedFromDir, normalizedSpecPath)\n}\n\n/**\n * Prefer a locale-qualified registry key for absolute specPath values, then\n * fall back to the normalized key. The CLI registers visible route aliases,\n * while relative paths already resolve through the current localized route.\n */\nfunction specModuleCandidates(moduleId: string, specPath: string, locale: string | undefined): string[] {\n const candidates: string[] = []\n if (locale && specPath.startsWith('/') && !specPath.startsWith(VIRTUAL_PREFIX)) {\n const rest = moduleId.slice(VIRTUAL_PREFIX.length)\n if (!rest.startsWith(`${locale}/`) && rest !== locale) candidates.push(`${VIRTUAL_PREFIX}${locale}/${rest}`)\n }\n candidates.push(moduleId)\n return candidates\n}\n\nexport function useOpenApiSpec(spec?: OpenAPISpec, specPath?: string): OpenApiSpecResult {\n const config = useConfig()\n const locale = useLocale()\n const specs = useOpenApiSpecs()\n const location = useLocation()\n const [loadedSpec, setLoadedSpec] = useState<LoadedSpecState>({ spec: null })\n const normalized = specPath ? normalizeSpecPath(specPath, location.pathname, config.routePrefix) : undefined\n const candidates = specPath && normalized ? specModuleCandidates(normalized, specPath, locale) : []\n const registryValue = candidates.map(candidate => specs[candidate]).find(Boolean)\n\n useEffect(() => {\n let cancelled = false\n\n if (!isOpenApiSpecLoader(registryValue)) return\n\n registryValue().then(module => {\n if (!cancelled) setLoadedSpec({ loader: registryValue, spec: getLoadedSpec(module) })\n }).catch(() => {\n if (!cancelled) setLoadedSpec({ loader: registryValue, spec: null })\n })\n\n return () => {\n cancelled = true\n }\n }, [registryValue])\n\n if (spec) return { spec, loading: false }\n if (!specPath) return { spec: null, loading: false }\n if (isOpenApiSpecLoader(registryValue)) {\n return loadedSpec.loader === registryValue\n ? { spec: loadedSpec.spec, loading: false }\n : { spec: null, loading: true }\n }\n return { spec: registryValue ?? null, loading: false }\n}\n","import type { ReactNode } from 'react'\n\nimport { PageTitleActions } from '../app/PageActions'\nimport { Prose } from '../components/Prose'\nimport { useBuiltInText } from '../core/i18n'\nimport { Markdown } from '../mdx/Markdown'\n\nimport { OpenApiOperation as OpenApiOperationComponent } from './components/OpenApiOperation'\nimport { useOpenApiSpec } from './lib/spec-path'\nimport { getOpenApiOperationEntry, listOpenApiOperations } from './lib/utils'\nimport type { OpenAPISpec } from './lib/utils'\n\ntype OpenApiPathsProps = { spec: OpenAPISpec; tagFilter?: string[] }\n\ntype OpenApiHeaderProps = { spec: OpenAPISpec }\n\ntype WarningBoxProps = {\n children: ReactNode\n tone?: 'amber' | 'red'\n}\n\nexport type OpenApiDocumentProps = {\n spec?: OpenAPISpec\n specPath?: string\n tagFilter?: string[]\n}\n\nexport type OpenApiRouteData = {\n spec: OpenAPISpec\n}\n\ntype OpenApiOperationWithSpecProps = {\n spec: OpenAPISpec\n path: string\n method: string\n}\n\nexport type OpenApiOperationProps = {\n specPath: string\n path: string\n method: string\n}\n\nfunction OpenApiHeader(arg0: OpenApiHeaderProps): ReactNode {\n const { spec } = arg0\n\n const t = useBuiltInText()\n return (\n <header className=\"clarify-openapi-header mb-16 border-b border-(--clarify-theme-tokens-colors-border) pb-8\">\n <p className=\"mb-3 text-xs/6 font-medium tracking-widest text-(--clarify-ui-accent-text) uppercase\">\n {t('openapi.openApiReference')}\n </p>\n <div className=\"clarify-page-title-row flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <h1 className=\"clarify-page-title min-w-0 flex-1\">{spec.info?.title ?? t('openapi.apiDocumentation')}</h1>\n <PageTitleActions />\n </div>\n {spec.info?.description ? <Markdown className=\"lead mt-4 *:first:mt-0 *:last:mb-0\">{spec.info.description}</Markdown> : null}\n {spec.info?.version ? <p className=\"mt-4 text-sm text-(--clarify-ui-text-faint)\">{t('openapi.version', { version: spec.info.version })}</p> : null}\n </header>\n )\n}\n\nfunction operationMatchesTags(operationTags: string[] | undefined, filterTags: string[] | undefined): boolean {\n if (!filterTags?.length) return true\n return operationTags?.some(tag => filterTags.includes(tag)) ?? false\n}\n\nfunction OpenApiPaths(arg0: OpenApiPathsProps): ReactNode {\n const { spec, tagFilter } = arg0\n\n const entries = listOpenApiOperations(spec)\n .filter(({ operation }) => operationMatchesTags(operation.tags, tagFilter))\n .map(({ path, method, operation, source }) => ({\n path,\n method: method.toUpperCase(),\n operation,\n source,\n }))\n\n return (\n <div className=\"clarify-api-endpoints divide-y divide-zinc-200/70 dark:divide-white/10\">\n {entries.map(({ path, method, operation, source }) => (\n <OpenApiOperationComponent key={`${source}-${method}-${path}`} spec={spec} path={path} method={method} operation={operation} operationSource={source} />\n ))}\n </div>\n )\n}\n\nfunction WarningBox(arg0: WarningBoxProps): ReactNode {\n const { children, tone = 'amber' } = arg0\n\n const classes = tone === 'red'\n ? 'rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200'\n : 'rounded-lg border border-amber-200 bg-amber-50 p-4 text-sm text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200'\n\n return <div className={`clarify-warning ${classes}`}>{children}</div>\n}\n\nexport function OpenApiDocument(arg0: OpenApiDocumentProps): ReactNode {\n const { spec, specPath, tagFilter } = arg0\n const t = useBuiltInText()\n const { spec: resolved, loading } = useOpenApiSpec(spec, specPath)\n\n if (loading) {\n return <WarningBox>{t('openapi.loading')}</WarningBox>\n }\n if (!resolved) {\n return <WarningBox>{t('openapi.specNotFound', { specPath: specPath ?? t('openapi.specPathMissing') })}</WarningBox>\n }\n\n return (\n <article className=\"clarify-openapi-page flex h-full flex-col pt-16 pb-10\">\n <Prose className=\"flex-auto\">\n <OpenApiHeader spec={resolved} />\n <OpenApiPaths spec={resolved} tagFilter={tagFilter} />\n </Prose>\n </article>\n )\n}\n\nfunction OpenApiOperationWithSpec(arg0: OpenApiOperationWithSpecProps): ReactNode {\n const { spec, path, method } = arg0\n const t = useBuiltInText()\n const entry = getOpenApiOperationEntry(spec, path, method)\n\n if (!entry) {\n return <WarningBox tone=\"red\">{t('openapi.endpointNotFound', { endpoint: `${method.toUpperCase()} ${path}` })}</WarningBox>\n }\n\n const normalizedMethod = entry.method.toUpperCase()\n return <OpenApiOperationComponent key={`${entry.source}-${normalizedMethod}-${path}`} spec={spec} path={path} method={normalizedMethod} operation={entry.operation} operationSource={entry.source} />\n}\n\nexport function OpenApiOperation(arg0: OpenApiOperationProps): ReactNode {\n const { specPath, path, method } = arg0\n const t = useBuiltInText()\n const { spec, loading } = useOpenApiSpec(undefined, specPath)\n\n if (loading) {\n return <WarningBox>{t('openapi.loading')}</WarningBox>\n }\n if (!spec) {\n return <WarningBox>{t('openapi.specNotFound', { specPath })}</WarningBox>\n }\n\n return <OpenApiOperationWithSpec spec={spec} path={path} method={method} />\n}\n\nexport function createOpenApiRouteComponent(data: OpenApiRouteData) {\n return function OpenApiRoutePage() {\n return <OpenApiDocument spec={data.spec} />\n }\n}\n","import { Collapse } from '../components/Collapse'\nimport { Mermaid } from '../components/Mermaid'\nimport { OpenApiDocument, OpenApiOperation } from '../openapi'\n\nimport { Markdown } from './Markdown'\nimport * as mdxPrimitives from './primitives'\n\nconst builtInMDXComponents = {\n ...mdxPrimitives,\n Markdown,\n Collapse,\n Mermaid,\n}\n\nconst builtInOpenAPIComponents = {\n OpenApiDocument,\n OpenApiOperation,\n}\n\nexport function useMDXComponents(components: Record<string, unknown> = {}) {\n return {\n ...components,\n ...builtInMDXComponents,\n ...builtInOpenAPIComponents,\n }\n}\n","import type { ReactNode } from 'react'\n\nimport { Prose } from '../components/Prose'\n\nexport type DocShellProps = {\n title: string\n subtitle?: string\n children: ReactNode\n}\n\nexport function DocShell(arg0: DocShellProps) {\n const { title, subtitle, children } = arg0\n\n return (\n <main className=\"clarify-doc-shell min-h-screen bg-(--clarify-theme-tokens-colors-background) px-6 py-10 text-(--clarify-theme-tokens-colors-foreground) md:px-10\">\n <div className=\"mx-auto max-w-6xl\">\n <header className=\"mb-10\">\n <h1 className=\"text-3xl font-bold tracking-tight md:text-5xl\">{title}</h1>\n {subtitle ? <p className=\"mt-3 max-w-2xl text-(--clarify-ui-text-soft)\">{subtitle}</p> : null}\n </header>\n <Prose>{children}</Prose>\n </div>\n </main>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../source/app/ContentDiagnostic.tsx","../source/openapi/lib/spec-path.ts","../source/openapi/entry.tsx","../source/mdx/components.ts","../source/mdx/DocShell.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\n\nimport { RenderErrorPanel } from './RenderErrorPanel'\n\nexport type ContentDiagnosticKind = 'markdown' | 'mdx' | 'openapi' | 'route-load'\n\nexport type ContentDiagnostic = {\n kind: ContentDiagnosticKind\n title: string\n message: string\n details?: string\n filePath?: string\n}\n\ntype ContentDiagnosticPanelProps = {\n data: ContentDiagnostic\n}\n\nfunction ContentDiagnosticPanel(params: ContentDiagnosticPanelProps) {\n const { data } = params\n const typeLabels: Record<ContentDiagnosticKind, string> = {\n markdown: 'Markdown',\n mdx: 'MDX',\n openapi: 'OpenAPI',\n 'route-load': 'Route',\n }\n const typeLabel = typeLabels[data.kind]\n const detailsLabel = data.kind === 'mdx' || data.kind === 'markdown' ? 'Why it happened' : 'Details'\n const pathLabel = 'File'\n\n return (\n <RenderErrorPanel\n title={data.title}\n description={data.message}\n titleId=\"clarify-content-diagnostic-title\"\n metadata={[\n { label: pathLabel, value: data.filePath ?? 'Unknown' },\n { label: 'Type', value: typeLabel },\n ]}\n detailsLabel={detailsLabel}\n detailsContent={data.details ? (\n <pre className=\"max-h-(--clarify-error-details-max-height) overflow-auto whitespace-pre-wrap wrap-break-word font-mono\">\n {data.details}\n </pre>\n ) : null}\n />\n )\n}\n\nexport function createContentDiagnosticComponent(data: ContentDiagnostic): ComponentType {\n return function ContentDiagnosticComponent() {\n return <ContentDiagnosticPanel data={data} />\n }\n}\n","import { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { useConfig, useLocale, useOpenApiSpecs } from '../../core/context'\n\nimport type { OpenAPISpec } from './utils'\n\ntype OpenApiSpecResult = {\n spec: OpenAPISpec | null\n loading: boolean\n}\n\ntype OpenApiSpecModule = { default: OpenAPISpec } | OpenAPISpec\n\ntype LoadedSpecState = {\n loader?: () => Promise<OpenApiSpecModule>\n spec: OpenAPISpec | null\n}\n\nfunction isOpenApiSpecLoader(value: unknown): value is () => Promise<OpenApiSpecModule> {\n return typeof value === 'function'\n}\n\nfunction getLoadedSpec(value: OpenApiSpecModule): OpenAPISpec {\n return value && typeof value === 'object' && 'default' in value\n ? value.default\n : value\n}\n\nconst VIRTUAL_PREFIX = 'virtual:clarify-page/'\n\nfunction resolveRelativePath(fromDir: string, to: string): string {\n const parts = (fromDir + '/' + to).split('/').filter(Boolean)\n const stack: string[] = []\n for (const part of parts) {\n if (part === '..') {\n stack.pop()\n } else if (part !== '.') {\n stack.push(part)\n }\n }\n return stack.join('/')\n}\n\nfunction normalizeSpecPath(specPath: string, currentRoutePath?: string, routePrefix = ''): string {\n if (specPath.startsWith(VIRTUAL_PREFIX)) return specPath\n\n const normalizedRoutePrefix = routePrefix.replace(/^\\/+|\\/+$/g, '')\n const normalizedSpecPath = specPath.startsWith('/') && normalizedRoutePrefix && specPath.slice(1).startsWith(`${normalizedRoutePrefix}/`)\n ? '/' + specPath.slice(normalizedRoutePrefix.length + 2)\n : specPath\n\n if (normalizedSpecPath.startsWith('/')) {\n return VIRTUAL_PREFIX + normalizedSpecPath.replace(/^\\//, '')\n }\n const fromDir = currentRoutePath === '/' ? '' : currentRoutePath?.replace(/^\\//, '').replace(/\\/[^/]*$/, '') ?? ''\n const normalizedFromDir = normalizedRoutePrefix && fromDir.startsWith(`${normalizedRoutePrefix}/`)\n ? fromDir.slice(normalizedRoutePrefix.length + 1)\n : fromDir\n return VIRTUAL_PREFIX + resolveRelativePath(normalizedFromDir, normalizedSpecPath)\n}\n\n/**\n * Prefer a locale-qualified registry key for absolute specPath values, then\n * fall back to the normalized key. The CLI registers visible route aliases,\n * while relative paths already resolve through the current localized route.\n */\nfunction specModuleCandidates(moduleId: string, specPath: string, locale: string | undefined): string[] {\n const candidates: string[] = []\n if (locale && specPath.startsWith('/') && !specPath.startsWith(VIRTUAL_PREFIX)) {\n const rest = moduleId.slice(VIRTUAL_PREFIX.length)\n if (!rest.startsWith(`${locale}/`) && rest !== locale) candidates.push(`${VIRTUAL_PREFIX}${locale}/${rest}`)\n }\n candidates.push(moduleId)\n return candidates\n}\n\nexport function useOpenApiSpec(spec?: OpenAPISpec, specPath?: string): OpenApiSpecResult {\n const config = useConfig()\n const locale = useLocale()\n const specs = useOpenApiSpecs()\n const location = useLocation()\n const [loadedSpec, setLoadedSpec] = useState<LoadedSpecState>({ spec: null })\n const normalized = specPath ? normalizeSpecPath(specPath, location.pathname, config.routePrefix) : undefined\n const candidates = specPath && normalized ? specModuleCandidates(normalized, specPath, locale) : []\n const registryValue = candidates.map(candidate => specs[candidate]).find(Boolean)\n\n useEffect(() => {\n let cancelled = false\n\n if (!isOpenApiSpecLoader(registryValue)) return\n\n registryValue().then(module => {\n if (!cancelled) setLoadedSpec({ loader: registryValue, spec: getLoadedSpec(module) })\n }).catch(() => {\n if (!cancelled) setLoadedSpec({ loader: registryValue, spec: null })\n })\n\n return () => {\n cancelled = true\n }\n }, [registryValue])\n\n if (spec) return { spec, loading: false }\n if (!specPath) return { spec: null, loading: false }\n if (isOpenApiSpecLoader(registryValue)) {\n return loadedSpec.loader === registryValue\n ? { spec: loadedSpec.spec, loading: false }\n : { spec: null, loading: true }\n }\n return { spec: registryValue ?? null, loading: false }\n}\n","import type { ReactNode } from 'react'\n\nimport { PageTitleActions } from '../app/PageActions'\nimport { Prose } from '../components/Prose'\nimport { useBuiltInText } from '../core/i18n'\nimport { Markdown } from '../mdx/Markdown'\n\nimport { OpenApiOperation as OpenApiOperationComponent } from './components/OpenApiOperation'\nimport { OpenApiRequestWorkbench } from './components/OpenApiRequest'\nimport { useOpenApiSpec } from './lib/spec-path'\nimport { getOpenApiOperationEntry, listOpenApiOperations } from './lib/utils'\nimport type { OpenAPISpec } from './lib/utils'\n\ntype OpenApiPathsProps = { spec: OpenAPISpec; tagFilter?: string[] }\n\ntype OpenApiHeaderProps = { spec: OpenAPISpec }\n\ntype WarningBoxProps = {\n children: ReactNode\n tone?: 'amber' | 'red'\n}\n\nexport type OpenApiDocumentProps = {\n spec?: OpenAPISpec\n specPath?: string\n tagFilter?: string[]\n}\n\nexport type OpenApiRouteData = {\n spec: OpenAPISpec\n}\n\ntype OpenApiOperationWithSpecProps = {\n spec: OpenAPISpec\n path: string\n method: string\n}\n\nexport type OpenApiOperationProps = {\n specPath: string\n path: string\n method: string\n}\n\nexport type OpenApiRequestProps = OpenApiOperationProps\n\nfunction OpenApiHeader(arg0: OpenApiHeaderProps): ReactNode {\n const { spec } = arg0\n\n const t = useBuiltInText()\n return (\n <header className=\"clarify-openapi-header mb-16 border-b border-(--clarify-theme-tokens-colors-border) pb-8\">\n <p className=\"mb-3 text-xs/6 font-medium tracking-widest text-(--clarify-ui-accent-text) uppercase\">\n {t('openapi.openApiReference')}\n </p>\n <div className=\"clarify-page-title-row flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <h1 className=\"clarify-page-title min-w-0 flex-1\">{spec.info?.title ?? t('openapi.apiDocumentation')}</h1>\n <PageTitleActions />\n </div>\n {spec.info?.description ? <Markdown className=\"lead mt-4 *:first:mt-0 *:last:mb-0\">{spec.info.description}</Markdown> : null}\n {spec.info?.version ? <p className=\"mt-4 text-sm text-(--clarify-ui-text-faint)\">{t('openapi.version', { version: spec.info.version })}</p> : null}\n </header>\n )\n}\n\nfunction operationMatchesTags(operationTags: string[] | undefined, filterTags: string[] | undefined): boolean {\n if (!filterTags?.length) return true\n return operationTags?.some(tag => filterTags.includes(tag)) ?? false\n}\n\nfunction OpenApiPaths(arg0: OpenApiPathsProps): ReactNode {\n const { spec, tagFilter } = arg0\n\n const entries = listOpenApiOperations(spec)\n .filter(({ operation }) => operationMatchesTags(operation.tags, tagFilter))\n .map(({ path, method, operation, source }) => ({\n path,\n method: method.toUpperCase(),\n operation,\n source,\n }))\n\n return (\n <div className=\"clarify-openai-endpoints divide-y divide-zinc-200/70 dark:divide-white/10\">\n {entries.map(({ path, method, operation, source }) => (\n <OpenApiOperationComponent key={`${source}-${method}-${path}`} spec={spec} path={path} method={method} operation={operation} operationSource={source} />\n ))}\n </div>\n )\n}\n\nfunction WarningBox(arg0: WarningBoxProps): ReactNode {\n const { children, tone = 'amber' } = arg0\n\n const classes = tone === 'red'\n ? 'rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200'\n : 'rounded-lg border border-amber-200 bg-amber-50 p-4 text-sm text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200'\n\n return <div className={`clarify-warning ${classes}`}>{children}</div>\n}\n\nexport function OpenApiDocument(arg0: OpenApiDocumentProps): ReactNode {\n const { spec, specPath, tagFilter } = arg0\n const t = useBuiltInText()\n const { spec: resolved, loading } = useOpenApiSpec(spec, specPath)\n\n if (loading) {\n return <WarningBox>{t('openapi.loading')}</WarningBox>\n }\n if (!resolved) {\n return <WarningBox>{t('openapi.specNotFound', { specPath: specPath ?? t('openapi.specPathMissing') })}</WarningBox>\n }\n\n return (\n <article className=\"clarify-openapi-page flex h-full flex-col pt-16 pb-10\">\n <Prose className=\"flex-auto\">\n <OpenApiHeader spec={resolved} />\n <OpenApiPaths spec={resolved} tagFilter={tagFilter} />\n </Prose>\n </article>\n )\n}\n\nfunction OpenApiOperationWithSpec(arg0: OpenApiOperationWithSpecProps): ReactNode {\n const { spec, path, method } = arg0\n const t = useBuiltInText()\n const entry = getOpenApiOperationEntry(spec, path, method)\n\n if (!entry) {\n return <WarningBox tone=\"red\">{t('openapi.endpointNotFound', { endpoint: `${method.toUpperCase()} ${path}` })}</WarningBox>\n }\n\n const normalizedMethod = entry.method.toUpperCase()\n return <OpenApiOperationComponent key={`${entry.source}-${normalizedMethod}-${path}`} spec={spec} path={path} method={normalizedMethod} operation={entry.operation} operationSource={entry.source} />\n}\n\nexport function OpenApiOperation(arg0: OpenApiOperationProps): ReactNode {\n const { specPath, path, method } = arg0\n const t = useBuiltInText()\n const { spec, loading } = useOpenApiSpec(undefined, specPath)\n\n if (loading) {\n return <WarningBox>{t('openapi.loading')}</WarningBox>\n }\n if (!spec) {\n return <WarningBox>{t('openapi.specNotFound', { specPath })}</WarningBox>\n }\n\n return <OpenApiOperationWithSpec spec={spec} path={path} method={method} />\n}\n\nexport function OpenApiRequest(arg0: OpenApiRequestProps): ReactNode {\n const { specPath, path, method } = arg0\n const t = useBuiltInText()\n const { spec, loading } = useOpenApiSpec(undefined, specPath)\n\n if (loading) return <WarningBox>{t('openapi.loading')}</WarningBox>\n if (!spec) return <WarningBox>{t('openapi.specNotFound', { specPath })}</WarningBox>\n\n const entry = getOpenApiOperationEntry(spec, path, method)\n if (!entry) return <WarningBox tone=\"red\">{t('openapi.endpointNotFound', { endpoint: `${method.toUpperCase()} ${path}` })}</WarningBox>\n\n return (\n <OpenApiRequestWorkbench\n spec={spec}\n path={path}\n method={entry.method.toUpperCase()}\n operation={entry.operation}\n operationSource={entry.source}\n />\n )\n}\n\nexport function createOpenApiRouteComponent(data: OpenApiRouteData) {\n return function OpenApiRoutePage() {\n return <OpenApiDocument spec={data.spec} />\n }\n}\n","import { Collapse } from '../components/Collapse'\nimport { Mermaid } from '../components/Mermaid'\nimport { OpenApiRequest, OpenApiDocument, OpenApiOperation } from '../openapi'\n\nimport { Markdown } from './Markdown'\nimport * as mdxPrimitives from './primitives'\n\nconst builtInMDXComponents = {\n ...mdxPrimitives,\n Markdown,\n Collapse,\n Mermaid,\n}\n\nconst builtInOpenAPIComponents = {\n OpenApiRequest,\n OpenApiDocument,\n OpenApiOperation,\n}\n\nexport function useMDXComponents(components: Record<string, unknown> = {}) {\n return {\n ...components,\n ...builtInMDXComponents,\n ...builtInOpenAPIComponents,\n }\n}\n","import type { ReactNode } from 'react'\n\nimport { Prose } from '../components/Prose'\n\nexport type DocShellProps = {\n title: string\n subtitle?: string\n children: ReactNode\n}\n\nexport function DocShell(arg0: DocShellProps) {\n const { title, subtitle, children } = arg0\n\n return (\n <main className=\"clarify-doc-shell min-h-screen bg-(--clarify-theme-tokens-colors-background) px-6 py-10 text-(--clarify-theme-tokens-colors-foreground) md:px-10\">\n <div className=\"mx-auto max-w-6xl\">\n <header className=\"mb-10\">\n <h1 className=\"text-3xl font-bold tracking-tight md:text-5xl\">{title}</h1>\n {subtitle ? <p className=\"mt-3 max-w-2xl text-(--clarify-ui-text-soft)\">{subtitle}</p> : null}\n </header>\n <Prose>{children}</Prose>\n </div>\n </main>\n )\n}\n"],"mappings":"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"}
package/output/index.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { AppShell } from './app/AppShell';
2
2
  import { BuiltWithClarify } from './app/BuiltWithClarify';
3
- import { createContentDiagnosticComponent, ContentDiagnostic } from './app/ContentDiagnostic';
3
+ import { createContentDiagnosticComponent, ContentDiagnostic, ContentDiagnosticKind } from './app/ContentDiagnostic';
4
4
  import { PageBanner } from './app/PageBanner';
5
5
  import { PageFooter } from './app/PageFooter';
6
6
  import { SectionProvider, useSectionStore, Section } from './app/SectionProvider';
7
- import { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Feedback, GridPattern, Heading, HeroPattern, Logo, Mermaid, Pre, Prose, Tag, WebFrame } from './components';
7
+ import { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Feedback, GridPattern, Heading, HeroPattern, Logo, Mermaid, Pre, Prose, Step, Steps, Tab, Tabs, Tag, WebFrame } from './components';
8
8
  import { OpenApiSpecsContext, useOpenApiSpecs } from './context';
9
9
  import { useMDXComponents } from './mdx/components';
10
10
  import { DocShell } from './mdx/DocShell';
11
11
  import { Markdown } from './mdx/Markdown';
12
12
  import { markdownRemarkPlugins, parseCodeMeta } from './mdx/remark';
13
- import { OpenApiDocument, OpenApiOperation, createOpenApiRouteComponent } from './openapi';
13
+ import { OpenApiRequest, OpenApiDocument, OpenApiOperation, createOpenApiRouteComponent } from './openapi';
14
14
  import { render } from './runtime/render';
15
15
  import { SlotProvider, RuntimeSlot, RuntimeSlotsProvider, useSlot } from './slots';
16
16
  import { applyThemeVariables, themeEditorPresets, ThemeEditor } from './theme/ThemeEditor';
@@ -19,13 +19,14 @@ import { ThemeToggle } from './theme/ThemeToggle';
19
19
  import { themePresets, themeBootstrapScript } from './theme/variables';
20
20
  import { Config, RouteItem, RouteSection, RenderOptions, ServerRenderOptions } from './types';
21
21
  import { remToPx } from './utils/remToPx';
22
- export type { OpenApiOperationProps, OpenApiDocumentProps, OpenAPIOperation, OpenAPISpec, OpenApiRouteData } from './openapi';
22
+ export type { OpenApiRequestProps, OpenApiOperationProps, OpenApiDocumentProps, OpenAPIOperation, OpenAPISpec, OpenApiRouteData } from './openapi';
23
23
  export type { ThemeEditorProps } from './theme/ThemeEditor';
24
- export type { ContentDiagnostic };
24
+ export type { StepProps, StepsProps, TabItem, TabProps, TabsProps } from './components';
25
+ export type { ContentDiagnostic, ContentDiagnosticKind };
25
26
  export type { Config, RouteItem, RouteSection, RenderOptions, ServerRenderOptions, Section };
26
27
  export type { RuntimeSlotEntry, RuntimeSlotRegistry, UISlotRegistration, UISlotName, UISlotContext } from './slots';
27
28
  export { AppShell, render, OpenApiSpecsContext, useOpenApiSpecs, BuiltWithClarify, PageBanner, PageFooter, ThemeProvider, ThemeToggle, ThemeEditor, useTheme, SectionProvider, useSectionStore, remToPx, applyThemeVariables, themeEditorPresets, themePresets, themeBootstrapScript, createContentDiagnosticComponent, createOpenApiRouteComponent };
28
- export { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Pre, Prose, Heading, Logo, Mermaid, GridPattern, HeroPattern, Feedback, Tag, WebFrame };
29
+ export { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Pre, Prose, Heading, Logo, Mermaid, GridPattern, HeroPattern, Feedback, Step, Steps, Tab, Tabs, Tag, WebFrame };
29
30
  export { DocShell, Markdown, useMDXComponents, markdownRemarkPlugins, parseCodeMeta };
30
31
  export { SlotProvider, RuntimeSlot, RuntimeSlotsProvider, useSlot };
31
- export { OpenApiDocument, OpenApiOperation };
32
+ export { OpenApiRequest, OpenApiDocument, OpenApiOperation };