import React from 'react'; import { AnnotationViewer, useProtoDevState, type AnnotationDirectoryRouteNode, type AnnotationSourceDocument, type AnnotationViewerOptions, } from '@axhub/annotation'; import annotationSource from './annotation-source.json'; type PageId = 'overview' | 'states'; type ResultState = 'success' | 'failure'; function normalizePageId(value: unknown): PageId { return value === 'states' ? 'states' : 'overview'; } function normalizeResultState(value: unknown): ResultState { return value === 'failure' ? 'failure' : 'success'; } function StateCard() { const protoState = useProtoDevState<{ result_state?: ResultState }>(); const resultState = normalizeResultState(protoState.result_state); const isSuccess = resultState === 'success'; return (
{isSuccess ? '成功' : '失败'}

{isSuccess ? '发布完成' : '发布失败'}

{isSuccess ? '可以继续评审标注内容。' : '需要展示失败原因和重试入口。'}

); } export function AnnotationStandaloneReactExample() { const [pageId, setPageId] = React.useState('overview'); const options = React.useMemo(() => ({ currentPageId: pageId, showToolbar: true, showThemeToggle: true, showColorFilter: true, onDirectoryRoute: (node: AnnotationDirectoryRouteNode) => { setPageId(normalizePageId(node.route)); }, }), [pageId]); return (
{pageId === 'overview' ? (

@axhub/annotation

这是一个脱离平台的 React 接入示例。

) : ( )}
); }