@semiont/react-ui 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/dist/index.d.ts +3560 -149
  2. package/dist/test-utils.d.ts +34 -16
  3. package/package.json +5 -3
  4. package/dist/assets/favicons/SemiontFavicon.d.ts +0 -9
  5. package/dist/assets/favicons/SemiontFavicon.d.ts.map +0 -1
  6. package/dist/assets/favicons/index.d.ts +0 -12
  7. package/dist/assets/favicons/index.d.ts.map +0 -1
  8. package/dist/components/AnnotateReferencesProgressWidget.d.ts +0 -15
  9. package/dist/components/AnnotateReferencesProgressWidget.d.ts.map +0 -1
  10. package/dist/components/Button/Button.d.ts +0 -69
  11. package/dist/components/Button/Button.d.ts.map +0 -1
  12. package/dist/components/CodeMirrorRenderer.d.ts +0 -25
  13. package/dist/components/CodeMirrorRenderer.d.ts.map +0 -1
  14. package/dist/components/ErrorBoundary.d.ts +0 -30
  15. package/dist/components/ErrorBoundary.d.ts.map +0 -1
  16. package/dist/components/LiveRegion.d.ts +0 -41
  17. package/dist/components/LiveRegion.d.ts.map +0 -1
  18. package/dist/components/ProtectedErrorBoundary.d.ts +0 -27
  19. package/dist/components/ProtectedErrorBoundary.d.ts.map +0 -1
  20. package/dist/components/ResizeHandle.d.ts +0 -39
  21. package/dist/components/ResizeHandle.d.ts.map +0 -1
  22. package/dist/components/ResourceTagsInline.d.ts +0 -10
  23. package/dist/components/ResourceTagsInline.d.ts.map +0 -1
  24. package/dist/components/SessionExpiryBanner.d.ts +0 -2
  25. package/dist/components/SessionExpiryBanner.d.ts.map +0 -1
  26. package/dist/components/SessionTimer.d.ts +0 -2
  27. package/dist/components/SessionTimer.d.ts.map +0 -1
  28. package/dist/components/StatusDisplay.d.ts +0 -9
  29. package/dist/components/StatusDisplay.d.ts.map +0 -1
  30. package/dist/components/Toast.d.ts +0 -27
  31. package/dist/components/Toast.d.ts.map +0 -1
  32. package/dist/components/Toolbar.d.ts +0 -15
  33. package/dist/components/Toolbar.d.ts.map +0 -1
  34. package/dist/components/UserMenuSkeleton.d.ts +0 -2
  35. package/dist/components/UserMenuSkeleton.d.ts.map +0 -1
  36. package/dist/components/annotation/AnnotateToolbar.d.ts +0 -29
  37. package/dist/components/annotation/AnnotateToolbar.d.ts.map +0 -1
  38. package/dist/components/annotation-popups/JsonLdView.d.ts +0 -8
  39. package/dist/components/annotation-popups/JsonLdView.d.ts.map +0 -1
  40. package/dist/components/annotation-popups/SharedPopupElements.d.ts +0 -28
  41. package/dist/components/annotation-popups/SharedPopupElements.d.ts.map +0 -1
  42. package/dist/components/branding/SemiontBranding.d.ts +0 -13
  43. package/dist/components/branding/SemiontBranding.d.ts.map +0 -1
  44. package/dist/components/error-states/ResourceErrorState.d.ts +0 -11
  45. package/dist/components/error-states/ResourceErrorState.d.ts.map +0 -1
  46. package/dist/components/image-annotation/AnnotationOverlay.d.ts +0 -22
  47. package/dist/components/image-annotation/AnnotationOverlay.d.ts.map +0 -1
  48. package/dist/components/image-annotation/SvgDrawingCanvas.d.ts +0 -23
  49. package/dist/components/image-annotation/SvgDrawingCanvas.d.ts.map +0 -1
  50. package/dist/components/layout/LeftSidebar.d.ts +0 -24
  51. package/dist/components/layout/LeftSidebar.d.ts.map +0 -1
  52. package/dist/components/layout/PageLayout.d.ts +0 -21
  53. package/dist/components/layout/PageLayout.d.ts.map +0 -1
  54. package/dist/components/layout/SkipLinks.d.ts +0 -8
  55. package/dist/components/layout/SkipLinks.d.ts.map +0 -1
  56. package/dist/components/layout/UnifiedHeader.d.ts +0 -21
  57. package/dist/components/layout/UnifiedHeader.d.ts.map +0 -1
  58. package/dist/components/loading-states/ComposeLoadingState.d.ts +0 -10
  59. package/dist/components/loading-states/ComposeLoadingState.d.ts.map +0 -1
  60. package/dist/components/loading-states/ResourceLoadingState.d.ts +0 -7
  61. package/dist/components/loading-states/ResourceLoadingState.d.ts.map +0 -1
  62. package/dist/components/modals/ConfigureGenerationStep.d.ts +0 -36
  63. package/dist/components/modals/ConfigureGenerationStep.d.ts.map +0 -1
  64. package/dist/components/modals/ConfigureSearchStep.d.ts +0 -21
  65. package/dist/components/modals/ConfigureSearchStep.d.ts.map +0 -1
  66. package/dist/components/modals/ContextSummary.d.ts +0 -14
  67. package/dist/components/modals/ContextSummary.d.ts.map +0 -1
  68. package/dist/components/modals/GatherContextStep.d.ts +0 -23
  69. package/dist/components/modals/GatherContextStep.d.ts.map +0 -1
  70. package/dist/components/modals/KeyboardShortcutsHelpModal.d.ts +0 -8
  71. package/dist/components/modals/KeyboardShortcutsHelpModal.d.ts.map +0 -1
  72. package/dist/components/modals/PermissionDeniedModal.d.ts +0 -12
  73. package/dist/components/modals/PermissionDeniedModal.d.ts.map +0 -1
  74. package/dist/components/modals/ReferenceWizardModal.d.ts +0 -64
  75. package/dist/components/modals/ReferenceWizardModal.d.ts.map +0 -1
  76. package/dist/components/modals/ResourceSearchModal.d.ts +0 -16
  77. package/dist/components/modals/ResourceSearchModal.d.ts.map +0 -1
  78. package/dist/components/modals/SearchModal.d.ts +0 -20
  79. package/dist/components/modals/SearchModal.d.ts.map +0 -1
  80. package/dist/components/modals/SearchResultsStep.d.ts +0 -22
  81. package/dist/components/modals/SearchResultsStep.d.ts.map +0 -1
  82. package/dist/components/modals/SessionExpiredModal.d.ts +0 -12
  83. package/dist/components/modals/SessionExpiredModal.d.ts.map +0 -1
  84. package/dist/components/navigation/CollapsibleResourceNavigation.d.ts +0 -13
  85. package/dist/components/navigation/CollapsibleResourceNavigation.d.ts.map +0 -1
  86. package/dist/components/navigation/Footer.d.ts +0 -20
  87. package/dist/components/navigation/Footer.d.ts.map +0 -1
  88. package/dist/components/navigation/NavigationMenu.d.ts +0 -18
  89. package/dist/components/navigation/NavigationMenu.d.ts.map +0 -1
  90. package/dist/components/navigation/ObservableLink.d.ts +0 -52
  91. package/dist/components/navigation/ObservableLink.d.ts.map +0 -1
  92. package/dist/components/navigation/SimpleNavigation.d.ts +0 -35
  93. package/dist/components/navigation/SimpleNavigation.d.ts.map +0 -1
  94. package/dist/components/navigation/SortableResourceTab.d.ts +0 -7
  95. package/dist/components/navigation/SortableResourceTab.d.ts.map +0 -1
  96. package/dist/components/pdf-annotation/PdfAnnotationCanvas.client.d.ts +0 -8
  97. package/dist/components/pdf-annotation/PdfAnnotationCanvas.client.d.ts.map +0 -1
  98. package/dist/components/pdf-annotation/PdfAnnotationCanvas.d.ts +0 -25
  99. package/dist/components/pdf-annotation/PdfAnnotationCanvas.d.ts.map +0 -1
  100. package/dist/components/resource/AnnotateView.d.ts +0 -29
  101. package/dist/components/resource/AnnotateView.d.ts.map +0 -1
  102. package/dist/components/resource/AnnotationHistory.d.ts +0 -14
  103. package/dist/components/resource/AnnotationHistory.d.ts.map +0 -1
  104. package/dist/components/resource/BrowseView.d.ts +0 -28
  105. package/dist/components/resource/BrowseView.d.ts.map +0 -1
  106. package/dist/components/resource/HistoryEvent.d.ts +0 -19
  107. package/dist/components/resource/HistoryEvent.d.ts.map +0 -1
  108. package/dist/components/resource/ResourceViewer.d.ts +0 -46
  109. package/dist/components/resource/ResourceViewer.d.ts.map +0 -1
  110. package/dist/components/resource/event-formatting.d.ts +0 -61
  111. package/dist/components/resource/event-formatting.d.ts.map +0 -1
  112. package/dist/components/resource/panels/AssessmentEntry.d.ts +0 -11
  113. package/dist/components/resource/panels/AssessmentEntry.d.ts.map +0 -1
  114. package/dist/components/resource/panels/AssessmentPanel.d.ts +0 -32
  115. package/dist/components/resource/panels/AssessmentPanel.d.ts.map +0 -1
  116. package/dist/components/resource/panels/AssistSection.d.ts +0 -27
  117. package/dist/components/resource/panels/AssistSection.d.ts.map +0 -1
  118. package/dist/components/resource/panels/CollaborationPanel.d.ts +0 -28
  119. package/dist/components/resource/panels/CollaborationPanel.d.ts.map +0 -1
  120. package/dist/components/resource/panels/CommentEntry.d.ts +0 -12
  121. package/dist/components/resource/panels/CommentEntry.d.ts.map +0 -1
  122. package/dist/components/resource/panels/CommentsPanel.d.ts +0 -32
  123. package/dist/components/resource/panels/CommentsPanel.d.ts.map +0 -1
  124. package/dist/components/resource/panels/HighlightEntry.d.ts +0 -11
  125. package/dist/components/resource/panels/HighlightEntry.d.ts.map +0 -1
  126. package/dist/components/resource/panels/HighlightPanel.d.ts +0 -30
  127. package/dist/components/resource/panels/HighlightPanel.d.ts.map +0 -1
  128. package/dist/components/resource/panels/JsonLdPanel.d.ts +0 -9
  129. package/dist/components/resource/panels/JsonLdPanel.d.ts.map +0 -1
  130. package/dist/components/resource/panels/PanelHeader.d.ts +0 -13
  131. package/dist/components/resource/panels/PanelHeader.d.ts.map +0 -1
  132. package/dist/components/resource/panels/ReferenceEntry.d.ts +0 -15
  133. package/dist/components/resource/panels/ReferenceEntry.d.ts.map +0 -1
  134. package/dist/components/resource/panels/ReferencesPanel.d.ts +0 -43
  135. package/dist/components/resource/panels/ReferencesPanel.d.ts.map +0 -1
  136. package/dist/components/resource/panels/ResourceInfoPanel.d.ts +0 -27
  137. package/dist/components/resource/panels/ResourceInfoPanel.d.ts.map +0 -1
  138. package/dist/components/resource/panels/StatisticsPanel.d.ts +0 -12
  139. package/dist/components/resource/panels/StatisticsPanel.d.ts.map +0 -1
  140. package/dist/components/resource/panels/TagEntry.d.ts +0 -11
  141. package/dist/components/resource/panels/TagEntry.d.ts.map +0 -1
  142. package/dist/components/resource/panels/TaggingPanel.d.ts +0 -34
  143. package/dist/components/resource/panels/TaggingPanel.d.ts.map +0 -1
  144. package/dist/components/resource/panels/UnifiedAnnotationsPanel.d.ts +0 -52
  145. package/dist/components/resource/panels/UnifiedAnnotationsPanel.d.ts.map +0 -1
  146. package/dist/components/resource/panels/agent-label.d.ts +0 -11
  147. package/dist/components/resource/panels/agent-label.d.ts.map +0 -1
  148. package/dist/components/settings/SettingsPanel.d.ts +0 -19
  149. package/dist/components/settings/SettingsPanel.d.ts.map +0 -1
  150. package/dist/components/viewers/ImageViewer.d.ts +0 -8
  151. package/dist/components/viewers/ImageViewer.d.ts.map +0 -1
  152. package/dist/components/viewers/index.d.ts +0 -2
  153. package/dist/components/viewers/index.d.ts.map +0 -1
  154. package/dist/contexts/AnnotationContext.d.ts +0 -46
  155. package/dist/contexts/AnnotationContext.d.ts.map +0 -1
  156. package/dist/contexts/ResourceAnnotationsContext.d.ts +0 -14
  157. package/dist/contexts/ResourceAnnotationsContext.d.ts.map +0 -1
  158. package/dist/contexts/RoutingContext.d.ts +0 -59
  159. package/dist/contexts/RoutingContext.d.ts.map +0 -1
  160. package/dist/contexts/ThemeContext.d.ts +0 -15
  161. package/dist/contexts/ThemeContext.d.ts.map +0 -1
  162. package/dist/contexts/TranslationContext.d.ts +0 -51
  163. package/dist/contexts/TranslationContext.d.ts.map +0 -1
  164. package/dist/contexts/useEventSubscription.d.ts +0 -41
  165. package/dist/contexts/useEventSubscription.d.ts.map +0 -1
  166. package/dist/design-tokens/index.d.ts +0 -178
  167. package/dist/design-tokens/index.d.ts.map +0 -1
  168. package/dist/features/admin-devops/components/AdminDevOpsPage.d.ts +0 -33
  169. package/dist/features/admin-devops/components/AdminDevOpsPage.d.ts.map +0 -1
  170. package/dist/features/admin-exchange/components/AdminExchangePage.d.ts +0 -37
  171. package/dist/features/admin-exchange/components/AdminExchangePage.d.ts.map +0 -1
  172. package/dist/features/admin-exchange/components/ExportCard.d.ts +0 -18
  173. package/dist/features/admin-exchange/components/ExportCard.d.ts.map +0 -1
  174. package/dist/features/admin-exchange/components/ImportCard.d.ts +0 -32
  175. package/dist/features/admin-exchange/components/ImportCard.d.ts.map +0 -1
  176. package/dist/features/admin-exchange/components/ImportProgress.d.ts +0 -26
  177. package/dist/features/admin-exchange/components/ImportProgress.d.ts.map +0 -1
  178. package/dist/features/admin-exchange/state/exchange-state-unit.d.ts +0 -31
  179. package/dist/features/admin-exchange/state/exchange-state-unit.d.ts.map +0 -1
  180. package/dist/features/admin-security/components/AdminSecurityPage.d.ts +0 -42
  181. package/dist/features/admin-security/components/AdminSecurityPage.d.ts.map +0 -1
  182. package/dist/features/admin-security/state/admin-security-state-unit.d.ts +0 -12
  183. package/dist/features/admin-security/state/admin-security-state-unit.d.ts.map +0 -1
  184. package/dist/features/admin-users/components/AdminUsersPage.d.ts +0 -88
  185. package/dist/features/admin-users/components/AdminUsersPage.d.ts.map +0 -1
  186. package/dist/features/admin-users/state/admin-users-state-unit.d.ts +0 -17
  187. package/dist/features/admin-users/state/admin-users-state-unit.d.ts.map +0 -1
  188. package/dist/features/auth/components/AuthErrorDisplay.d.ts +0 -34
  189. package/dist/features/auth/components/AuthErrorDisplay.d.ts.map +0 -1
  190. package/dist/features/auth/components/SignInForm.d.ts +0 -80
  191. package/dist/features/auth/components/SignInForm.d.ts.map +0 -1
  192. package/dist/features/auth/components/SignUpForm.d.ts +0 -39
  193. package/dist/features/auth/components/SignUpForm.d.ts.map +0 -1
  194. package/dist/features/auth-welcome/components/WelcomePage.d.ts +0 -62
  195. package/dist/features/auth-welcome/components/WelcomePage.d.ts.map +0 -1
  196. package/dist/features/auth-welcome/state/welcome-state-unit.d.ts +0 -12
  197. package/dist/features/auth-welcome/state/welcome-state-unit.d.ts.map +0 -1
  198. package/dist/features/moderate-entity-tags/components/EntityTagsPage.d.ts +0 -32
  199. package/dist/features/moderate-entity-tags/components/EntityTagsPage.d.ts.map +0 -1
  200. package/dist/features/moderate-entity-tags/state/entity-tags-state-unit.d.ts +0 -16
  201. package/dist/features/moderate-entity-tags/state/entity-tags-state-unit.d.ts.map +0 -1
  202. package/dist/features/moderate-recent/components/RecentDocumentsPage.d.ts +0 -27
  203. package/dist/features/moderate-recent/components/RecentDocumentsPage.d.ts.map +0 -1
  204. package/dist/features/moderate-tag-schemas/components/TagSchemasPage.d.ts +0 -25
  205. package/dist/features/moderate-tag-schemas/components/TagSchemasPage.d.ts.map +0 -1
  206. package/dist/features/moderation-linked-data/components/LinkedDataPage.d.ts +0 -38
  207. package/dist/features/moderation-linked-data/components/LinkedDataPage.d.ts.map +0 -1
  208. package/dist/features/resource-compose/components/ResourceComposePage.d.ts +0 -83
  209. package/dist/features/resource-compose/components/ResourceComposePage.d.ts.map +0 -1
  210. package/dist/features/resource-compose/components/UploadProgressBar.d.ts +0 -23
  211. package/dist/features/resource-compose/components/UploadProgressBar.d.ts.map +0 -1
  212. package/dist/features/resource-compose/state/compose-page-state-unit.d.ts +0 -59
  213. package/dist/features/resource-compose/state/compose-page-state-unit.d.ts.map +0 -1
  214. package/dist/features/resource-discovery/components/ResourceCard.d.ts +0 -17
  215. package/dist/features/resource-discovery/components/ResourceCard.d.ts.map +0 -1
  216. package/dist/features/resource-discovery/components/ResourceDiscoveryPage.d.ts +0 -43
  217. package/dist/features/resource-discovery/components/ResourceDiscoveryPage.d.ts.map +0 -1
  218. package/dist/features/resource-discovery/state/discover-state-unit.d.ts +0 -15
  219. package/dist/features/resource-discovery/state/discover-state-unit.d.ts.map +0 -1
  220. package/dist/features/resource-viewer/components/ResourceViewerPage.d.ts +0 -80
  221. package/dist/features/resource-viewer/components/ResourceViewerPage.d.ts.map +0 -1
  222. package/dist/features/resource-viewer/state/resource-loader-state-unit.d.ts +0 -11
  223. package/dist/features/resource-viewer/state/resource-loader-state-unit.d.ts.map +0 -1
  224. package/dist/features/resource-viewer/state/resource-viewer-page-state-unit.d.ts +0 -48
  225. package/dist/features/resource-viewer/state/resource-viewer-page-state-unit.d.ts.map +0 -1
  226. package/dist/hooks/useDebounce.d.ts +0 -29
  227. package/dist/hooks/useDebounce.d.ts.map +0 -1
  228. package/dist/hooks/useDragAnnouncements.d.ts +0 -12
  229. package/dist/hooks/useDragAnnouncements.d.ts.map +0 -1
  230. package/dist/hooks/useHoverDelay.d.ts +0 -8
  231. package/dist/hooks/useHoverDelay.d.ts.map +0 -1
  232. package/dist/hooks/useHoverEmitter.d.ts +0 -8
  233. package/dist/hooks/useHoverEmitter.d.ts.map +0 -1
  234. package/dist/hooks/useKeyboardShortcuts.d.ts +0 -29
  235. package/dist/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  236. package/dist/hooks/useLineNumbers.d.ts +0 -8
  237. package/dist/hooks/useLineNumbers.d.ts.map +0 -1
  238. package/dist/hooks/useMediaToken.d.ts +0 -7
  239. package/dist/hooks/useMediaToken.d.ts.map +0 -1
  240. package/dist/hooks/useObservable.d.ts +0 -23
  241. package/dist/hooks/useObservable.d.ts.map +0 -1
  242. package/dist/hooks/useObservableBrowse.d.ts +0 -70
  243. package/dist/hooks/useObservableBrowse.d.ts.map +0 -1
  244. package/dist/hooks/usePanelWidth.d.ts +0 -37
  245. package/dist/hooks/usePanelWidth.d.ts.map +0 -1
  246. package/dist/hooks/useResourceContent.d.ts +0 -7
  247. package/dist/hooks/useResourceContent.d.ts.map +0 -1
  248. package/dist/hooks/useRovingTabIndex.d.ts +0 -13
  249. package/dist/hooks/useRovingTabIndex.d.ts.map +0 -1
  250. package/dist/hooks/useSearchAnnouncements.d.ts +0 -10
  251. package/dist/hooks/useSearchAnnouncements.d.ts.map +0 -1
  252. package/dist/hooks/useSessionExpiry.d.ts +0 -10
  253. package/dist/hooks/useSessionExpiry.d.ts.map +0 -1
  254. package/dist/hooks/useShellStateUnit.d.ts +0 -9
  255. package/dist/hooks/useShellStateUnit.d.ts.map +0 -1
  256. package/dist/hooks/useStateUnit.d.ts +0 -3
  257. package/dist/hooks/useStateUnit.d.ts.map +0 -1
  258. package/dist/hooks/useUI.d.ts +0 -24
  259. package/dist/hooks/useUI.d.ts.map +0 -1
  260. package/dist/index.d.ts.map +0 -1
  261. package/dist/integrations/css-modules-helper.d.ts +0 -114
  262. package/dist/integrations/css-modules-helper.d.ts.map +0 -1
  263. package/dist/integrations/styled-components-theme.d.ts +0 -95
  264. package/dist/integrations/styled-components-theme.d.ts.map +0 -1
  265. package/dist/integrations/tailwind-plugin.d.cts +0 -3
  266. package/dist/integrations/tailwind-plugin.d.cts.map +0 -1
  267. package/dist/lib/annotation-overlay.d.ts +0 -71
  268. package/dist/lib/annotation-overlay.d.ts.map +0 -1
  269. package/dist/lib/annotation-registry.d.ts +0 -62
  270. package/dist/lib/annotation-registry.d.ts.map +0 -1
  271. package/dist/lib/browser-pdfjs.d.ts +0 -93
  272. package/dist/lib/browser-pdfjs.d.ts.map +0 -1
  273. package/dist/lib/button-styles.d.ts +0 -27
  274. package/dist/lib/button-styles.d.ts.map +0 -1
  275. package/dist/lib/codemirror-handlers.d.ts +0 -52
  276. package/dist/lib/codemirror-handlers.d.ts.map +0 -1
  277. package/dist/lib/codemirror-json-theme.d.ts +0 -8
  278. package/dist/lib/codemirror-json-theme.d.ts.map +0 -1
  279. package/dist/lib/codemirror-logic.d.ts +0 -66
  280. package/dist/lib/codemirror-logic.d.ts.map +0 -1
  281. package/dist/lib/codemirror-widgets.d.ts +0 -39
  282. package/dist/lib/codemirror-widgets.d.ts.map +0 -1
  283. package/dist/lib/formatTime.d.ts +0 -2
  284. package/dist/lib/formatTime.d.ts.map +0 -1
  285. package/dist/lib/media-shapes.d.ts +0 -51
  286. package/dist/lib/media-shapes.d.ts.map +0 -1
  287. package/dist/lib/pdf-coordinates.d.ts +0 -69
  288. package/dist/lib/pdf-coordinates.d.ts.map +0 -1
  289. package/dist/lib/resource-utils.d.ts +0 -22
  290. package/dist/lib/resource-utils.d.ts.map +0 -1
  291. package/dist/lib/scroll-utils.d.ts +0 -20
  292. package/dist/lib/scroll-utils.d.ts.map +0 -1
  293. package/dist/lib/text-segmentation.d.ts +0 -25
  294. package/dist/lib/text-segmentation.d.ts.map +0 -1
  295. package/dist/lib/text-selection-handler.d.ts +0 -46
  296. package/dist/lib/text-selection-handler.d.ts.map +0 -1
  297. package/dist/lib/validation.d.ts +0 -47
  298. package/dist/lib/validation.d.ts.map +0 -1
  299. package/dist/session/SemiontProvider.d.ts +0 -28
  300. package/dist/session/SemiontProvider.d.ts.map +0 -1
  301. package/dist/session/web-browser-storage.d.ts +0 -19
  302. package/dist/session/web-browser-storage.d.ts.map +0 -1
  303. package/dist/state/session-state-unit.d.ts +0 -9
  304. package/dist/state/session-state-unit.d.ts.map +0 -1
  305. package/dist/state/shell-state-unit.d.ts +0 -33
  306. package/dist/state/shell-state-unit.d.ts.map +0 -1
  307. package/dist/test-utils.d.ts.map +0 -1
  308. package/dist/types/AnnotationManager.d.ts +0 -53
  309. package/dist/types/AnnotationManager.d.ts.map +0 -1
  310. package/dist/types/TranslationManager.d.ts +0 -15
  311. package/dist/types/TranslationManager.d.ts.map +0 -1
  312. package/dist/types/annotation-props.d.ts +0 -108
  313. package/dist/types/annotation-props.d.ts.map +0 -1
  314. package/dist/types/collapsible-navigation.d.ts +0 -69
  315. package/dist/types/collapsible-navigation.d.ts.map +0 -1
  316. package/dist/types/modals.d.ts +0 -77
  317. package/dist/types/modals.d.ts.map +0 -1
  318. package/dist/types/navigation.d.ts +0 -35
  319. package/dist/types/navigation.d.ts.map +0 -1
  320. package/dist/types/resource-viewer.d.ts +0 -19
  321. package/dist/types/resource-viewer.d.ts.map +0 -1
  322. package/dist/types/simple-navigation.d.ts +0 -15
  323. package/dist/types/simple-navigation.d.ts.map +0 -1
  324. package/dist/types/translation.d.ts +0 -5
  325. package/dist/types/translation.d.ts.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,150 +1,3561 @@
1
+ import * as _semiont_react_ui from '@semiont/react-ui';
2
+ import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, EventMap, AnnotationId, StoredEventLike, ConnectionState, GatheredContext, BackendDownload, ProgressEvent, AccessToken } from '@semiont/core';
3
+ export { Annotation } from '@semiont/core';
4
+ import * as React$1 from 'react';
5
+ import React__default, { ComponentType, ReactNode, KeyboardEvent as KeyboardEvent$1, Component, ErrorInfo, Ref } from 'react';
6
+ import * as _codemirror_state from '@codemirror/state';
7
+ import { HighlightStyle } from '@codemirror/language';
8
+ import { WidgetType } from '@codemirror/view';
9
+ import * as react_jsx_runtime from 'react/jsx-runtime';
10
+ import { StateUnit, SemiontBrowser, SessionStorage, SessionFactory, SemiontSession, OpenResource, TagSchema, UploadProgress, SemiontClient, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry, SearchPipeline } from '@semiont/sdk';
11
+ export { BeckonStateUnit, GatherStateUnit, GenerateDocumentOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
12
+ import { Observable } from 'rxjs';
13
+
1
14
  /**
2
- * @semiont/react-ui
3
- *
4
- * React components and hooks for Semiont applications
5
- */
6
- export * from './types/annotation-props';
7
- export * from './types/AnnotationManager';
8
- export * from './types/navigation';
9
- export * from './types/TranslationManager';
10
- export * from './types/resource-viewer';
11
- export * from './lib/annotation-registry';
12
- export * from './lib/button-styles';
13
- export * from './lib/codemirror-json-theme';
14
- export * from './lib/codemirror-widgets';
15
- export * from './lib/media-shapes';
16
- export { createSearchPipeline, type SearchPipeline, type SearchPipelineOptions, type SearchState } from '@semiont/sdk';
17
- export * from './lib/annotation-overlay';
18
- export * from './lib/resource-utils';
19
- export * from './lib/validation';
20
- export * from './hooks/useStateUnit';
21
- export * from './hooks/useDebounce';
22
- export * from './lib/formatTime';
23
- export * from './hooks/useKeyboardShortcuts';
24
- export * from './hooks/useLineNumbers';
25
- export * from './hooks/useHoverDelay';
26
- export * from './hooks/useObservableBrowse';
27
- export * from './hooks/usePanelWidth';
28
- export * from './hooks/useRovingTabIndex';
29
- export * from './hooks/useSessionExpiry';
30
- export * from './contexts/ThemeContext';
31
- export { useDropdown, useLoadingState, useLocalStorage } from './hooks/useUI';
32
- export * from './hooks/useResourceContent';
33
- export { SemiontProvider, useSemiont, type SemiontProviderProps } from './session/SemiontProvider';
34
- export { WebBrowserStorage } from './session/web-browser-storage';
35
- export * from './contexts/AnnotationContext';
36
- export * from './contexts/useEventSubscription';
37
- export * from './contexts/ResourceAnnotationsContext';
38
- export * from './contexts/RoutingContext';
39
- export * from './contexts/TranslationContext';
40
- export * from './components/CodeMirrorRenderer';
41
- export * from './components/AnnotateReferencesProgressWidget';
42
- export * from './components/ErrorBoundary';
43
- export * from './components/ProtectedErrorBoundary';
44
- export * from './components/LiveRegion';
45
- export * from './components/ResizeHandle';
46
- export * from './components/ResourceTagsInline';
47
- export * from './components/Toast';
48
- export * from './components/Toolbar';
49
- export * from './components/settings/SettingsPanel';
50
- export * from './components/annotation/AnnotateToolbar';
51
- export * from './components/annotation-popups/JsonLdView';
52
- export * from './components/annotation-popups/SharedPopupElements';
53
- export * from './components/image-annotation/AnnotationOverlay';
54
- export * from './components/image-annotation/SvgDrawingCanvas';
55
- export * from './components/modals/KeyboardShortcutsHelpModal';
56
- export * from './components/modals/PermissionDeniedModal';
57
- export * from './components/modals/SessionExpiredModal';
58
- export * from './components/resource/AnnotateView';
59
- export * from './components/resource/AnnotationHistory';
60
- export * from './components/resource/BrowseView';
61
- export * from './components/resource/HistoryEvent';
62
- export * from './components/resource/ResourceViewer';
63
- export * from './components/resource/panels/AssessmentEntry';
64
- export * from './components/resource/panels/AssessmentPanel';
65
- export * from './components/resource/panels/CollaborationPanel';
66
- export * from './components/resource/panels/CommentEntry';
67
- export * from './components/resource/panels/CommentsPanel';
68
- export * from './components/resource/panels/AssistSection';
69
- export * from './components/resource/panels/HighlightEntry';
70
- export * from './components/resource/panels/HighlightPanel';
71
- export * from './components/resource/panels/JsonLdPanel';
72
- export * from './components/resource/panels/PanelHeader';
73
- export * from './components/resource/panels/ReferenceEntry';
74
- export * from './components/resource/panels/ReferencesPanel';
75
- export * from './components/resource/panels/ResourceInfoPanel';
76
- export * from './components/resource/panels/StatisticsPanel';
77
- export * from './components/resource/panels/TagEntry';
78
- export * from './components/resource/panels/TaggingPanel';
79
- export * from './components/resource/panels/UnifiedAnnotationsPanel';
80
- export * from './components/viewers';
81
- export * from './components/navigation/Footer';
82
- export * from './components/navigation/NavigationMenu';
83
- export * from './components/navigation/ObservableLink';
84
- export * from './components/navigation/SimpleNavigation';
85
- export * from './components/navigation/CollapsibleResourceNavigation';
86
- export * from './components/navigation/SortableResourceTab';
87
- export type { CollapsibleResourceNavigationProps, SortableResourceTabProps } from './types/collapsible-navigation';
88
- export type { SimpleNavigationItem, SimpleNavigationProps } from './types/simple-navigation';
89
- export * from './components/modals/ReferenceWizardModal';
90
- export * from './components/modals/SearchModal';
91
- export * from './components/modals/ResourceSearchModal';
92
- export type { SearchModalProps, ResourceSearchModalProps, } from './types/modals';
93
- export * from './components/layout/SkipLinks';
94
- export * from './components/StatusDisplay';
95
- export * from './components/SessionTimer';
96
- export * from './components/SessionExpiryBanner';
97
- export * from './components/UserMenuSkeleton';
98
- export * from './components/branding/SemiontBranding';
99
- export * from './components/layout/UnifiedHeader';
100
- export * from './components/layout/LeftSidebar';
101
- export * from './components/layout/PageLayout';
102
- export { SemiontFavicon } from './assets/favicons/SemiontFavicon';
103
- export { faviconPaths } from './assets/favicons';
104
- export { Button, ButtonGroup } from './components/Button/Button';
105
- export type { ButtonProps, ButtonGroupProps } from './components/Button/Button';
106
- export { tokens, generateCSSVariables, cssVariables } from './design-tokens';
107
- export type { ColorToken, SpacingToken, TypographyToken, BorderRadiusToken, ShadowToken, TransitionToken } from './design-tokens';
108
- export * from './components/loading-states/ComposeLoadingState';
109
- export * from './components/loading-states/ResourceLoadingState';
110
- export * from './components/error-states/ResourceErrorState';
111
- export * from './features/admin-devops/components/AdminDevOpsPage';
112
- export * from './features/admin-exchange/components/AdminExchangePage';
113
- export * from './features/admin-exchange/components/ExportCard';
114
- export * from './features/admin-exchange/components/ImportCard';
115
- export * from './features/admin-exchange/components/ImportProgress';
116
- export * from './features/admin-security/components/AdminSecurityPage';
117
- export * from './features/moderation-linked-data/components/LinkedDataPage';
118
- export * from './features/admin-users/components/AdminUsersPage';
119
- export * from './features/auth/components/SignInForm';
120
- export * from './features/auth/components/SignUpForm';
121
- export * from './features/auth/components/AuthErrorDisplay';
122
- export * from './features/auth-welcome/components/WelcomePage';
123
- export * from './features/moderate-entity-tags/components/EntityTagsPage';
124
- export * from './features/moderate-recent/components/RecentDocumentsPage';
125
- export * from './features/moderate-tag-schemas/components/TagSchemasPage';
126
- export * from './features/resource-compose/components/ResourceComposePage';
127
- export * from './features/resource-compose/components/UploadProgressBar';
128
- export * from './features/resource-discovery/components/ResourceDiscoveryPage';
129
- export * from './features/resource-discovery/components/ResourceCard';
130
- export * from './features/resource-viewer/components/ResourceViewerPage';
131
- export * from './hooks/useHoverEmitter';
132
- export { createBeckonStateUnit, type BeckonStateUnit, createHoverHandlers, type HoverHandlers, HOVER_DELAY_MS } from '@semiont/sdk';
133
- export { createMarkStateUnit, type MarkStateUnit, type PendingAnnotation } from '@semiont/sdk';
134
- export { createYieldStateUnit, type YieldStateUnit, type GenerateDocumentOptions } from '@semiont/sdk';
135
- export { createGatherStateUnit, type GatherStateUnit } from '@semiont/sdk';
136
- export { createMatchStateUnit, type MatchStateUnit } from '@semiont/sdk';
137
- export { createShellStateUnit, type ShellStateUnit, type ShellStateUnitOptions, type ToolbarPanelType, COMMON_PANELS, RESOURCE_PANELS } from './state/shell-state-unit';
138
- export { createSessionStateUnit, type SessionStateUnit } from './state/session-state-unit';
139
- export { createComposePageStateUnit, type ComposePageStateUnit, type ComposeParams, type ComposeMode, type CloneData, type ReferenceData, type SaveResourceParams } from './features/resource-compose/state/compose-page-state-unit';
140
- export { createResourceViewerPageStateUnit, type ResourceViewerPageStateUnit, type WizardState, type AnnotationGroups } from './features/resource-viewer/state/resource-viewer-page-state-unit';
141
- export { createResourceLoaderStateUnit, type ResourceLoaderStateUnit } from './features/resource-viewer/state/resource-loader-state-unit';
142
- export { createAdminUsersStateUnit, type AdminUsersStateUnit } from './features/admin-users/state/admin-users-state-unit';
143
- export { createAdminSecurityStateUnit, type AdminSecurityStateUnit } from './features/admin-security/state/admin-security-state-unit';
144
- export { createExchangeStateUnit, type ExchangeStateUnit, type ImportPreview } from './features/admin-exchange/state/exchange-state-unit';
145
- export { createWelcomeStateUnit, type WelcomeStateUnit } from './features/auth-welcome/state/welcome-state-unit';
146
- export { createDiscoverStateUnit, type DiscoverStateUnit } from './features/resource-discovery/state/discover-state-unit';
147
- export { createEntityTagsStateUnit, type EntityTagsStateUnit } from './features/moderate-entity-tags/state/entity-tags-state-unit';
148
- export * from './hooks/useShellStateUnit';
149
- export * from './hooks/useObservable';
150
- //# sourceMappingURL=index.d.ts.map
15
+ * Collection of all annotation types for a resource.
16
+ * Replaces separate highlights, references, assessments, comments, tags props.
17
+ */
18
+ interface AnnotationsCollection {
19
+ highlights: Annotation[];
20
+ references: Annotation[];
21
+ assessments: Annotation[];
22
+ comments: Annotation[];
23
+ tags: Annotation[];
24
+ }
25
+ /**
26
+ * Event handlers for annotation interactions.
27
+ * Groups multiple click and hover handlers into a single interface.
28
+ */
29
+ interface AnnotationHandlers {
30
+ /** Unified click handler - routes based on annotation type and current mode */
31
+ onClick?: (annotation: Annotation, event?: React.MouseEvent) => void;
32
+ /** Unified hover handler for all annotation types */
33
+ onHover?: (annotationId: string | null) => void;
34
+ /** Hover handler specifically for comment panel highlighting */
35
+ onCommentHover?: (commentId: string | null) => void;
36
+ }
37
+ /**
38
+ * UI-level parameters for annotation creation.
39
+ * Works for both text selections and image shapes.
40
+ * Used by annotation UI components before converting to AnnotationManager params.
41
+ */
42
+ interface UICreateAnnotationParams {
43
+ /** The motivation for creating this annotation */
44
+ motivation: _semiont_react_ui.SelectionMotivation;
45
+ /** Selector information - text, SVG, or fragment */
46
+ selector: {
47
+ /** Selector type */
48
+ type: 'TextQuoteSelector' | 'SvgSelector' | 'FragmentSelector';
49
+ /** For TextQuoteSelector: the exact text selected */
50
+ exact?: string;
51
+ /** For TextQuoteSelector: context before selection */
52
+ prefix?: string;
53
+ /** For TextQuoteSelector: context after selection */
54
+ suffix?: string;
55
+ /** For TextPositionSelector: start position in document */
56
+ start?: number;
57
+ /** For TextPositionSelector: end position in document */
58
+ end?: number;
59
+ /** For SvgSelector: the SVG shape string */
60
+ value?: string;
61
+ /** For FragmentSelector: conformsTo URI (RFC 3778 for PDF) */
62
+ conformsTo?: string;
63
+ };
64
+ /** Optional position for popup placement (text: near selection, image: shape center) */
65
+ position?: {
66
+ x: number;
67
+ y: number;
68
+ };
69
+ }
70
+ /**
71
+ * Unified creation handler for new annotations.
72
+ * Works for both text and image annotations.
73
+ *
74
+ * Behavior by motivation:
75
+ * - highlighting/assessing: Creates annotation immediately
76
+ * - commenting: Creates annotation, then opens Comment Panel
77
+ * - linking: Shows Quick Reference popup FIRST, creates when user confirms
78
+ */
79
+ interface AnnotationCreationHandler {
80
+ onCreate?: (params: UICreateAnnotationParams) => void | Promise<void> | Promise<Annotation | undefined>;
81
+ }
82
+ /**
83
+ * UI state for annotation toolbar and interactions.
84
+ * Groups multiple UI state props into a single object.
85
+ */
86
+ interface AnnotationUIState {
87
+ /** Currently selected annotation motivation (linking, highlighting, etc.) */
88
+ selectedMotivation: _semiont_react_ui.SelectionMotivation | null;
89
+ /** Currently selected click mode (detail, follow, delete, jsonld) */
90
+ selectedClick: _semiont_react_ui.ClickAction;
91
+ /** Currently selected shape for image annotations */
92
+ selectedShape: _semiont_react_ui.ShapeType;
93
+ /** ID of currently hovered annotation (optional - only set when hovering) */
94
+ hoveredAnnotationId?: string | null;
95
+ /** ID of annotation to scroll to (optional - only set when scrolling needed) */
96
+ scrollToAnnotationId?: string | null;
97
+ }
98
+ /**
99
+ * Configuration options for annotation views.
100
+ * Groups feature flags and settings.
101
+ */
102
+ interface AnnotationConfig {
103
+ /** Whether content is editable */
104
+ editable?: boolean;
105
+ /** Whether to show annotation widgets (entity types, reference buttons) */
106
+ enableWidgets?: boolean;
107
+ /** Whether to show line numbers in code view */
108
+ showLineNumbers?: boolean;
109
+ /** Whether view is in annotate mode or browse mode */
110
+ annotateMode?: boolean;
111
+ }
112
+
113
+ /**
114
+ * Parameters for creating an annotation
115
+ */
116
+ interface CreateAnnotationParams {
117
+ rUri: ResourceId;
118
+ motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging';
119
+ selector: Selector | Selector[];
120
+ body?: any[];
121
+ }
122
+ /**
123
+ * Parameters for deleting an annotation
124
+ */
125
+ interface DeleteAnnotationParams {
126
+ annotationId: string;
127
+ rUri: ResourceId;
128
+ }
129
+ /**
130
+ * Annotation Manager Interface
131
+ *
132
+ * Framework-agnostic interface for annotation mutations.
133
+ * Apps provide implementations via AnnotationProvider.
134
+ *
135
+ * Example implementation:
136
+ * ```typescript
137
+ * function useAnnotationManager(client: SemiontClient): AnnotationManager {
138
+ * return {
139
+ * markAnnotation: async (params) => {
140
+ * const result = await client.mark.annotation({ target: { source: params.rUri, ... }, ... });
141
+ * return result.annotation;
142
+ * },
143
+ * deleteAnnotation: async (params) => {
144
+ * await client.mark.delete(params.rUri, params.annotationId);
145
+ * }
146
+ * };
147
+ * }
148
+ * ```
149
+ */
150
+ interface AnnotationManager {
151
+ /**
152
+ * Create a new annotation
153
+ * @param params - Creation parameters (rUri, motivation, selector, body)
154
+ * @returns Promise resolving to the created annotation, or undefined if creation fails
155
+ */
156
+ markAnnotation: (params: CreateAnnotationParams) => Promise<Annotation | undefined>;
157
+ /**
158
+ * Delete an annotation
159
+ * @param params - Deletion parameters (annotationId, rUri)
160
+ * @returns Promise resolving when deletion completes
161
+ */
162
+ deleteAnnotation: (params: DeleteAnnotationParams) => Promise<void>;
163
+ }
164
+
165
+ /**
166
+ * Represents a single navigation item
167
+ */
168
+ interface NavigationItem {
169
+ /** Display name for the navigation item */
170
+ name: string;
171
+ /** Target URL/path for the navigation item */
172
+ href: string;
173
+ /** Icon component to display */
174
+ icon: ComponentType<any>;
175
+ /** Optional description/tooltip text */
176
+ description?: string;
177
+ }
178
+ /**
179
+ * Props for navigation components that need framework-specific routing
180
+ */
181
+ interface NavigationProps {
182
+ /** List of navigation items to display */
183
+ items: NavigationItem[];
184
+ /** Current active path for highlighting */
185
+ currentPath: string;
186
+ /** Framework-specific Link component (e.g., Next.js Link) */
187
+ LinkComponent: ComponentType<{
188
+ href: string;
189
+ className?: string;
190
+ children: ReactNode;
191
+ title?: string;
192
+ }>;
193
+ /** Optional CSS class name */
194
+ className?: string;
195
+ /** Optional section title */
196
+ title?: string;
197
+ }
198
+
199
+ /**
200
+ * Translation management interface
201
+ * Apps implement this to provide translations using their preferred i18n library
202
+ */
203
+ interface TranslationManager {
204
+ /**
205
+ * Translate a key within a namespace
206
+ * @param namespace - Translation namespace (e.g., 'Toolbar', 'ResourceViewer')
207
+ * @param key - Translation key within the namespace
208
+ * @param params - Optional parameters for interpolation
209
+ * @returns Translated string
210
+ */
211
+ t: (namespace: string, key: string, params?: Record<string, any>) => string;
212
+ }
213
+
214
+ /**
215
+ * Type definitions for resource viewer feature
216
+ */
217
+
218
+ type SemiontResource$2 = ResourceDescriptor;
219
+ type Motivation$8 = components['schemas']['Motivation'];
220
+ /**
221
+ * Selection for creating annotations
222
+ */
223
+ interface TextSelection {
224
+ exact: string;
225
+ start: number;
226
+ end: number;
227
+ prefix?: string;
228
+ suffix?: string;
229
+ svgSelector?: string;
230
+ }
231
+
232
+ /**
233
+ * Centralized annotation type registry
234
+ *
235
+ * Single source of truth for W3C annotation motivation metadata including:
236
+ * - Visual styling (CSS classes)
237
+ * - Behavior flags (clickable, hover, side panel)
238
+ * - Type guards (motivation matching)
239
+ * - Accessibility (screen reader announcements)
240
+ * - Runtime handlers (click, hover, detect, update, create)
241
+ *
242
+ * Per CLAUDE.md: This is the ONLY place to define annotation type metadata.
243
+ * No aliasing, wrappers, or compatibility layers elsewhere.
244
+ */
245
+
246
+ type Motivation$7 = components['schemas']['Motivation'];
247
+ /**
248
+ * Detection configuration for SSE-based annotation detection
249
+ */
250
+ interface DetectionConfig {
251
+ sseMethod: 'detectReferences' | 'detectHighlights' | 'detectAssessments' | 'detectComments' | 'detectTags';
252
+ countField: 'foundCount' | 'createdCount' | 'tagsCreated';
253
+ displayNamePlural: string;
254
+ displayNameSingular: string;
255
+ formatRequestParams?: (args: unknown[]) => Array<{
256
+ label: string;
257
+ value: string;
258
+ }>;
259
+ }
260
+ /**
261
+ * Creation configuration - describes how to create annotations of this type
262
+ */
263
+ interface CreateConfig {
264
+ bodyBuilder: 'empty' | 'text' | 'entityTag' | 'dualTag';
265
+ refetchAfter: boolean;
266
+ successMessage?: string;
267
+ }
268
+ /**
269
+ * Annotator: Encapsulates all motivation-specific behavior
270
+ * Handles clicks, hovers, detection, and other operations for one annotation type
271
+ */
272
+ interface Annotator {
273
+ motivation: Motivation$7;
274
+ internalType: string;
275
+ displayName: string;
276
+ description: string;
277
+ className: string;
278
+ iconEmoji?: string;
279
+ isClickable: boolean;
280
+ hasHoverInteraction: boolean;
281
+ hasSidePanel: boolean;
282
+ matchesAnnotation: (annotation: Annotation) => boolean;
283
+ announceOnCreate: string;
284
+ detection?: DetectionConfig;
285
+ create: CreateConfig;
286
+ }
287
+ /**
288
+ * Static annotator definitions - single source of truth
289
+ */
290
+ declare const ANNOTATORS: Record<string, Annotator>;
291
+
292
+ /**
293
+ * Centralized button styles matching Figma design
294
+ * Two primary styles from authenticated home page:
295
+ * 1. Primary (cyan/blue gradient) - for main CTAs
296
+ * 2. Secondary (gray with black outline) - for secondary actions
297
+ */
298
+ declare const buttonStyles: {
299
+ readonly primary: {
300
+ readonly base: "semiont-button semiont-button--primary";
301
+ readonly large: "semiont-button semiont-button--primary semiont-button--large";
302
+ };
303
+ readonly secondary: {
304
+ readonly base: "semiont-button semiont-button--secondary";
305
+ readonly withScale: "semiont-button semiont-button--secondary semiont-button--scale";
306
+ };
307
+ readonly tertiary: {
308
+ readonly base: "semiont-button semiont-button--tertiary";
309
+ };
310
+ readonly danger: {
311
+ readonly base: "semiont-button semiont-button--danger";
312
+ };
313
+ readonly warning: {
314
+ readonly base: "semiont-button semiont-button--warning";
315
+ };
316
+ readonly combine: (...classes: string[]) => string;
317
+ };
318
+
319
+ declare const jsonLightTheme: _codemirror_state.Extension;
320
+ declare const jsonLightHighlightStyle: HighlightStyle;
321
+
322
+ /**
323
+ * CodeMirror Inline Widgets
324
+ *
325
+ * Custom widgets for enhancing the document editing experience:
326
+ * - Reference resolution indicators (resolved 🔗, generating ✨, stub ❓)
327
+ *
328
+ * Event handling uses delegation — no per-widget listeners.
329
+ * Data attributes on the container enable CodeMirrorRenderer to handle
330
+ * clicks and hovers via a single set of delegated handlers.
331
+ */
332
+
333
+ /**
334
+ * Reference Resolution Widget
335
+ * Shows a small indicator next to references with hover preview.
336
+ *
337
+ * All event handling is delegated — the widget sets data attributes
338
+ * and CodeMirrorRenderer handles events via container-level listeners.
339
+ */
340
+ declare class ReferenceResolutionWidget extends WidgetType {
341
+ readonly annotation: Annotation;
342
+ readonly targetDocumentName?: string | undefined;
343
+ readonly isGenerating?: boolean | undefined;
344
+ constructor(annotation: Annotation, targetDocumentName?: string | undefined, isGenerating?: boolean | undefined);
345
+ eq(other: ReferenceResolutionWidget): boolean;
346
+ toDOM(): HTMLSpanElement;
347
+ ignoreEvent(event: Event): boolean;
348
+ }
349
+ /**
350
+ * Show a tooltip preview on a widget container.
351
+ * Called from delegated mouseenter handler in CodeMirrorRenderer.
352
+ */
353
+ declare function showWidgetPreview(container: HTMLElement, documentName: string): void;
354
+ /**
355
+ * Hide the tooltip preview from a widget container.
356
+ * Called from delegated mouseleave handler in CodeMirrorRenderer.
357
+ */
358
+ declare function hideWidgetPreview(container: HTMLElement): void;
359
+
360
+ type SelectionMotivation = 'linking' | 'highlighting' | 'assessing' | 'commenting' | 'tagging';
361
+ type ClickAction = 'detail' | 'follow' | 'jsonld' | 'deleting';
362
+ type ShapeType = 'rectangle' | 'circle' | 'polygon';
363
+ interface AnnotateToolbarProps {
364
+ selectedMotivation: SelectionMotivation | null;
365
+ selectedClick: ClickAction;
366
+ showSelectionGroup?: boolean;
367
+ showDeleteButton?: boolean;
368
+ showShapeGroup?: boolean;
369
+ selectedShape?: ShapeType;
370
+ mediaType?: string | null;
371
+ annotateMode: boolean;
372
+ annotators: Record<string, Annotator>;
373
+ }
374
+ /**
375
+ * Toolbar for annotation controls with mode, selection, click, and shape options
376
+ *
377
+ * @emits mark:selection-changed - Selection motivation changed. Payload: { motivation: SelectionMotivation | null }
378
+ * @emits mark:click-changed - Click action mode changed. Payload: { action: ClickAction }
379
+ * @emits mark:shape-changed - Drawing shape changed. Payload: { shape: ShapeType }
380
+ * @emits mark:mode-toggled - View mode toggled between browse and annotate. Payload: undefined
381
+ */
382
+ declare function AnnotateToolbar({ selectedMotivation, selectedClick, showSelectionGroup, showDeleteButton, showShapeGroup, selectedShape, mediaType, annotateMode, annotators }: AnnotateToolbarProps): react_jsx_runtime.JSX.Element;
383
+
384
+ /**
385
+ * Media Type Shape Support
386
+ *
387
+ * Defines which annotation shapes are supported for each media type.
388
+ * Shapes are tracked per selector type (FragmentSelector, SvgSelector).
389
+ */
390
+
391
+ /**
392
+ * Selector types that support shape selection
393
+ */
394
+ type SelectorType = 'fragment' | 'svg' | 'text';
395
+ /**
396
+ * Get supported annotation shapes for a given media type
397
+ *
398
+ * PDF: Only rectangles (FragmentSelector with RFC 3778 viewrect)
399
+ * Images: All shapes (SvgSelector supports rect, circle, polygon)
400
+ *
401
+ * @param mediaType - MIME type of the resource (e.g., 'application/pdf', 'image/png')
402
+ * @returns Array of supported shape types for annotation
403
+ */
404
+ declare function getSupportedShapes(mediaType: string | undefined | null): ShapeType[];
405
+ /**
406
+ * Check if a shape type is supported for a given media type
407
+ *
408
+ * @param mediaType - MIME type of the resource
409
+ * @param shape - Shape type to check
410
+ * @returns true if the shape is supported for this media type
411
+ */
412
+ declare function isShapeSupported(mediaType: string | undefined | null, shape: ShapeType): boolean;
413
+ /**
414
+ * Get the selector type used for a given media type
415
+ *
416
+ * @param mediaType - MIME type of the resource
417
+ * @returns Selector type (fragment, svg, or text)
418
+ */
419
+ declare function getSelectorType(mediaType: string | undefined | null): SelectorType;
420
+ /**
421
+ * Get the selected shape for a given selector type from localStorage
422
+ *
423
+ * @param selectorType - The selector type
424
+ * @returns The selected shape, or default for that selector type
425
+ */
426
+ declare function getSelectedShapeForSelectorType(selectorType: SelectorType): ShapeType;
427
+ /**
428
+ * Save the selected shape for a given selector type to localStorage
429
+ *
430
+ * @param selectorType - The selector type
431
+ * @param shape - The shape to save
432
+ */
433
+ declare function saveSelectedShapeForSelectorType(selectorType: SelectorType, shape: ShapeType): void;
434
+
435
+ /**
436
+ * Annotation overlay: decouples annotation highlighting from markdown rendering.
437
+ *
438
+ * Instead of weaving annotations into the markdown AST via remark/rehype plugins
439
+ * (which forces O(ASTnodes × annotations) work on every render), this module:
440
+ *
441
+ * 1. Builds a source→rendered offset map once after the markdown DOM paints
442
+ * 2. Resolves W3C TextPositionSelector offsets to DOM Ranges via binary search
443
+ * 3. Wraps matched ranges with <span> elements carrying data-annotation-* attributes
444
+ *
445
+ * Markdown renders once (cached by React.memo). Annotation changes only touch
446
+ * the overlay spans — no markdown re-parse, no AST walk.
447
+ */
448
+
449
+ interface OverlayAnnotation {
450
+ id: string;
451
+ exact: string;
452
+ offset: number;
453
+ length: number;
454
+ type: string;
455
+ source: string | null;
456
+ }
457
+ interface TextNodeEntry {
458
+ node: Text;
459
+ start: number;
460
+ end: number;
461
+ }
462
+ /**
463
+ * Build a map from markdown source offsets to rendered text offsets.
464
+ * Character-by-character alignment: walks source and rendered text in parallel,
465
+ * matching characters and skipping markdown syntax in the source.
466
+ *
467
+ * Complexity: O(sourceLength) — runs once per content change.
468
+ */
469
+ declare function buildSourceToRenderedMap(markdownSource: string, container: HTMLElement): Map<number, number>;
470
+ /**
471
+ * Build a sorted array of text nodes with cumulative rendered offsets
472
+ * for efficient offset→node lookups via binary search.
473
+ *
474
+ * Complexity: O(textNodes) — runs once per overlay application.
475
+ */
476
+ declare function buildTextNodeIndex(container: HTMLElement): TextNodeEntry[];
477
+ /**
478
+ * Resolve annotations to DOM Ranges using the cached offset map.
479
+ *
480
+ * Complexity: O(annotations × log(textNodes)).
481
+ */
482
+ declare function resolveAnnotationRanges(annotations: OverlayAnnotation[], offsetMap: Map<number, number>, textNodeIndex: TextNodeEntry[]): Map<string, {
483
+ range: Range;
484
+ annotation: OverlayAnnotation;
485
+ }>;
486
+ /**
487
+ * Wrap annotation Ranges with styled <span> elements.
488
+ * Handles cross-element ranges by splitting into per-text-node segments.
489
+ */
490
+ declare function applyHighlights(ranges: Map<string, {
491
+ range: Range;
492
+ annotation: OverlayAnnotation;
493
+ }>): void;
494
+ /**
495
+ * Remove all annotation highlight spans, restoring the original DOM.
496
+ * Unwraps spans and merges adjacent text nodes.
497
+ */
498
+ declare function clearHighlights(container: HTMLElement): void;
499
+ /**
500
+ * Convert W3C Annotations to the simplified overlay format.
501
+ * Extracts TextPositionSelector offsets and annotation type.
502
+ */
503
+ declare function toOverlayAnnotations(annotations: Annotation[]): OverlayAnnotation[];
504
+
505
+ /**
506
+ * Resource utilities
507
+ * Shared helper functions for resource display and metadata
508
+ */
509
+ /**
510
+ * Get icon emoji based on media type
511
+ */
512
+ declare function getResourceIcon(mediaType: string | undefined): string;
513
+ /**
514
+ * Check if a resource supports text-based AI detection features
515
+ *
516
+ * Currently returns true for any text/* media type.
517
+ * Future enhancements may include:
518
+ * - Checking resource language/locale compatibility
519
+ * - Validating content size limits
520
+ * - Checking for specific text format requirements
521
+ *
522
+ * @param mediaType - The media type string (e.g., 'text/plain', 'text/markdown')
523
+ * @returns true if the resource supports AI detection features
524
+ */
525
+ declare function supportsDetection(mediaType: string | undefined): boolean;
526
+
527
+ /**
528
+ * Frontend-specific validation utilities
529
+ *
530
+ * Browser and Next.js specific validation with security checks.
531
+ * For generic validation utilities, see @semiont/api-client/utils/validation
532
+ */
533
+
534
+ /**
535
+ * Image URL validation with security checks (browser-specific)
536
+ *
537
+ * Validates image URLs for use in browser environments with XSS prevention.
538
+ * Only allows HTTPS for external images, blocks suspicious patterns.
539
+ */
540
+ declare const ImageURLSchema: {
541
+ parse(url: unknown): string;
542
+ safeParse(url: unknown): ValidationResult<string>;
543
+ };
544
+ /**
545
+ * OAuth user validation (Next.js NextAuth specific)
546
+ *
547
+ * Validates user objects returned from OAuth providers.
548
+ * Includes domain validation for access control.
549
+ */
550
+ interface OAuthUser {
551
+ id: string;
552
+ email: string;
553
+ name?: string | null;
554
+ image?: string | null;
555
+ domain: string;
556
+ isAdmin: boolean;
557
+ isModerator: boolean;
558
+ }
559
+ declare const OAuthUserSchema: {
560
+ parse(data: unknown): OAuthUser;
561
+ safeParse(data: unknown): ValidationResult<OAuthUser>;
562
+ };
563
+ /**
564
+ * URL sanitization for images (browser-specific security)
565
+ *
566
+ * Sanitizes image URLs by validating and reconstructing with only safe parts.
567
+ * Returns null if validation fails.
568
+ *
569
+ * @param url - Image URL to sanitize
570
+ * @returns Sanitized URL or null if invalid
571
+ */
572
+ declare function sanitizeImageURL(url: string): string | null;
573
+
574
+ declare function useStateUnit<T extends StateUnit>(factory: () => T): T;
575
+
576
+ /**
577
+ * Creates a debounced version of a callback function
578
+ *
579
+ * @param callback - The function to debounce
580
+ * @param delay - Debounce delay in milliseconds
581
+ * @returns Debounced function
582
+ *
583
+ * @example
584
+ * const debouncedSearch = useDebouncedCallback(
585
+ * (query) => performSearch(query),
586
+ * 500
587
+ * );
588
+ */
589
+ declare function useDebouncedCallback<T extends (...args: any[]) => any>(callback: T, delay: number): (...args: Parameters<T>) => void;
590
+ /**
591
+ * useDebounce Hook
592
+ *
593
+ * Custom hook for debouncing values (e.g., search input).
594
+ * Returns a debounced value that updates after the specified delay.
595
+ *
596
+ * @param value - The value to debounce
597
+ * @param delay - Debounce delay in milliseconds
598
+ * @returns Debounced value
599
+ *
600
+ * @example
601
+ * const debouncedQuery = useDebounce(searchQuery, 500);
602
+ */
603
+ declare function useDebounce<T>(value: T, delay: number): T;
604
+
605
+ declare function formatTime(milliseconds: number | null): string | null;
606
+
607
+ interface KeyboardShortcut {
608
+ key: string;
609
+ ctrlOrCmd?: boolean;
610
+ shift?: boolean;
611
+ alt?: boolean;
612
+ handler: (event: KeyboardEvent) => void;
613
+ description?: string;
614
+ enabled?: boolean;
615
+ }
616
+ /**
617
+ * Hook for managing keyboard shortcuts
618
+ * Handles platform differences (Cmd on Mac, Ctrl on Windows/Linux)
619
+ * Prevents conflicts with browser shortcuts
620
+ */
621
+ declare function useKeyboardShortcuts(shortcuts: KeyboardShortcut[]): void;
622
+ /**
623
+ * Hook for double key press detection (e.g., double Escape)
624
+ */
625
+ declare function useDoubleKeyPress(key: string, handler: () => void, timeout?: number): void;
626
+ /**
627
+ * Get keyboard shortcut display text based on platform
628
+ */
629
+ declare function getShortcutDisplay(shortcut: KeyboardShortcut): string;
630
+ /**
631
+ * Hook to check if user is currently typing in an input field
632
+ * Keyboard shortcuts should generally be disabled when typing
633
+ */
634
+ declare function useIsTyping(): boolean;
635
+
636
+ /**
637
+ * Hook to manage line numbers display setting with localStorage persistence
638
+ */
639
+ declare function useLineNumbers(): {
640
+ showLineNumbers: boolean;
641
+ toggleLineNumbers: () => void;
642
+ };
643
+
644
+ /**
645
+ * Hook to manage hover delay setting with localStorage persistence
646
+ */
647
+ declare function useHoverDelay(): {
648
+ hoverDelayMs: number;
649
+ setHoverDelayMs: (delayMs: number) => void;
650
+ };
651
+
652
+ /**
653
+ * Generic router interface - works with any router that has push/replace methods
654
+ * (Next.js App Router, Next.js Pages Router, React Router, etc.)
655
+ */
656
+ interface Router {
657
+ push: (path: string) => void;
658
+ replace?: (path: string) => void;
659
+ [key: string]: any;
660
+ }
661
+ /**
662
+ * Hook that wraps any router with event emission for observability
663
+ *
664
+ * Use this to wrap your router (Next.js, React Router, etc.) when you want
665
+ * navigation actions to be observable through the NavigationEventBus.
666
+ *
667
+ * @emits nav:push - Router navigation requested. Payload: { path: string, reason?: string }
668
+ *
669
+ * @example
670
+ * ```typescript
671
+ * // Next.js App Router
672
+ * import { useRouter } from 'next/navigation';
673
+ * const nextRouter = useRouter();
674
+ * const router = useObservableRouter(nextRouter);
675
+ * router.push('/know/discover', { reason: 'resource-closed' });
676
+ *
677
+ * // React Router
678
+ * import { useNavigate } from 'react-router-dom';
679
+ * const navigate = useNavigate();
680
+ * const router = useObservableRouter({ push: navigate });
681
+ * router.push('/know/discover', { reason: 'resource-closed' });
682
+ * ```
683
+ */
684
+ declare function useObservableRouter<T extends Router>(baseRouter: T): T;
685
+ /**
686
+ * Request navigation with event emission
687
+ *
688
+ * This hook emits a navigation request event. The app must subscribe to
689
+ * 'nav:external' and perform the actual navigation using
690
+ * its router (Next.js, React Router, etc.) to enable client-side routing.
691
+ *
692
+ * If no subscriber handles the event, falls back to window.location.href
693
+ * after a brief delay to allow for event handling.
694
+ *
695
+ * @emits nav:external - External navigation requested. Payload: { url: string, resourceId?: string, cancelFallback: () => void }
696
+ *
697
+ * The payload includes a `cancelFallback` function that subscribers must call to
698
+ * prevent the window.location fallback from firing. Subscribers that handle the
699
+ * navigation (e.g. via client-side routing) should always call cancelFallback().
700
+ *
701
+ * @example
702
+ * ```typescript
703
+ * // In component (react-ui package)
704
+ * const navigate = useObservableExternalNavigation();
705
+ * navigate('/know/resource/123', { resourceId: '123' });
706
+ *
707
+ * // In app (frontend package) - subscribe, cancel fallback, and handle with Next.js router
708
+ * const router = useRouter();
709
+ * useEventSubscriptions({
710
+ * 'nav:external': ({ url, cancelFallback }) => {
711
+ * cancelFallback(); // Prevent window.location fallback
712
+ * router.push(url); // Client-side navigation
713
+ * },
714
+ * });
715
+ * ```
716
+ */
717
+ declare function useObservableExternalNavigation(): (url: string, metadata?: {
718
+ resourceId?: string;
719
+ }) => void;
720
+
721
+ interface UsePanelWidthOptions {
722
+ defaultWidth?: number;
723
+ minWidth?: number;
724
+ maxWidth?: number;
725
+ storageKey?: string;
726
+ }
727
+ /**
728
+ * Custom hook for managing resizable panel width with localStorage persistence
729
+ *
730
+ * @param options Configuration options for panel width behavior
731
+ * @param options.defaultWidth Default width in pixels (default: 384px / 24rem)
732
+ * @param options.minWidth Minimum allowed width in pixels (default: 256px / 16rem)
733
+ * @param options.maxWidth Maximum allowed width in pixels (default: 800px / 50rem)
734
+ * @param options.storageKey localStorage key for persistence (default: 'semiont-panel-width')
735
+ *
736
+ * @returns Object containing current width, setter function, and constraints
737
+ *
738
+ * @example
739
+ * ```tsx
740
+ * const { width, setWidth, minWidth, maxWidth } = usePanelWidth();
741
+ *
742
+ * <div style={{ width: `${width}px` }}>
743
+ * <ResizeHandle onResize={setWidth} minWidth={minWidth} maxWidth={maxWidth} />
744
+ * </div>
745
+ * ```
746
+ */
747
+ declare function usePanelWidth({ defaultWidth, // 24rem
748
+ minWidth, // 16rem
749
+ maxWidth, // 50rem
750
+ storageKey }?: UsePanelWidthOptions): {
751
+ width: number;
752
+ setWidth: (newWidth: number) => void;
753
+ minWidth: number;
754
+ maxWidth: number;
755
+ };
756
+
757
+ interface UseRovingTabIndexOptions {
758
+ orientation?: 'horizontal' | 'vertical' | 'grid';
759
+ loop?: boolean;
760
+ cols?: number;
761
+ }
762
+ declare function useRovingTabIndex<T extends HTMLElement>(itemCount: number, options?: UseRovingTabIndexOptions): {
763
+ containerRef: React$1.RefObject<T | null>;
764
+ handleKeyDown: (event: KeyboardEvent$1) => void;
765
+ focusItem: (index: number) => void;
766
+ };
767
+
768
+ /**
769
+ * Tracks the time remaining on the active KB session's JWT and whether it's
770
+ * expiring soon (< 5 minutes). Reads the session's `expiresAt` getter (which
771
+ * derives from the current `token$` value) and re-derives once per second.
772
+ */
773
+ declare function useSessionExpiry(): {
774
+ timeRemaining: number | null;
775
+ isExpiringSoon: boolean;
776
+ };
777
+
778
+ type Theme = 'light' | 'dark' | 'system';
779
+ type ResolvedTheme = 'light' | 'dark';
780
+ interface ThemeContextValue {
781
+ theme: Theme;
782
+ setTheme: (theme: Theme) => void;
783
+ resolvedTheme: ResolvedTheme;
784
+ systemTheme: ResolvedTheme;
785
+ }
786
+ declare function ThemeProvider({ children }: {
787
+ children: ReactNode;
788
+ }): react_jsx_runtime.JSX.Element;
789
+ declare function useTheme(): ThemeContextValue;
790
+
791
+ /**
792
+ * Hook for managing dropdown/menu visibility with click outside handling
793
+ */
794
+ declare function useDropdown(): {
795
+ isOpen: boolean;
796
+ toggle: () => void;
797
+ open: () => void;
798
+ close: () => void;
799
+ dropdownRef: React$1.RefObject<HTMLDivElement | null>;
800
+ };
801
+ /**
802
+ * Hook for managing loading states with minimum display time
803
+ */
804
+ declare function useLoadingState(minLoadingTime?: number): {
805
+ isLoading: boolean;
806
+ showLoading: boolean;
807
+ startLoading: () => void;
808
+ stopLoading: () => void;
809
+ };
810
+ /**
811
+ * Hook for local storage with SSR safety
812
+ */
813
+ declare function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T | ((val: T) => T)) => void];
814
+
815
+ interface UseResourceContentResult {
816
+ content: string;
817
+ loading: boolean;
818
+ }
819
+ declare function useResourceContent(rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
820
+
821
+ interface SemiontProviderProps {
822
+ /** Inject a fully-constructed browser (tests, embedded hosts that build their own). Omit to use the default. */
823
+ browser?: SemiontBrowser;
824
+ /** Override the default `WebBrowserStorage`. Useful for non-browser hosts (Electron/Tauri filesystem-backed adapters). */
825
+ storage?: SessionStorage;
826
+ /** Override the default HTTP session factory. Useful for in-process or future non-HTTP transports. */
827
+ sessionFactory?: SessionFactory;
828
+ children: ReactNode;
829
+ }
830
+ declare function SemiontProvider({ browser, storage, sessionFactory, children }: SemiontProviderProps): react_jsx_runtime.JSX.Element;
831
+ declare function useSemiont(): SemiontBrowser;
832
+
833
+ /**
834
+ * WebBrowserStorage — browser-backed `SessionStorage` implementation.
835
+ * Wraps `localStorage` for reads/writes and `window`'s `storage` event
836
+ * for cross-tab change notifications.
837
+ *
838
+ * Construction requires a browser context. The guard matches the
839
+ * existing registry behavior: server rendering that accidentally
840
+ * instantiates this gets a loud error rather than a silent no-op
841
+ * that would mask token leaks.
842
+ */
843
+
844
+ declare class WebBrowserStorage implements SessionStorage {
845
+ constructor();
846
+ get(key: string): string | null;
847
+ set(key: string, value: string): void;
848
+ delete(key: string): void;
849
+ subscribe(handler: (key: string, newValue: string | null) => void): () => void;
850
+ }
851
+
852
+ interface AnnotationProviderProps {
853
+ annotationManager: AnnotationManager;
854
+ children: React__default.ReactNode;
855
+ }
856
+ /**
857
+ * Annotation Provider
858
+ *
859
+ * Provides annotation mutation capabilities (create, delete) via the Provider Pattern.
860
+ * Apps inject their own AnnotationManager implementation.
861
+ *
862
+ * Example usage:
863
+ * ```typescript
864
+ * function useAnnotationManager(client: SemiontClient): AnnotationManager {
865
+ * return {
866
+ * markAnnotation: async (params) => {
867
+ * const result = await client.mark.annotation({
868
+ * motivation: params.motivation,
869
+ * target: { source: params.rUri, selector: params.selector },
870
+ * body: params.body,
871
+ * });
872
+ * return result.annotation;
873
+ * },
874
+ * deleteAnnotation: async (params) => {
875
+ * await client.mark.delete(params.rUri, params.annotationId);
876
+ * }
877
+ * };
878
+ * }
879
+ *
880
+ * // In app layout
881
+ * const annotationManager = useAnnotationManager();
882
+ * <AnnotationProvider annotationManager={annotationManager}>
883
+ * <YourComponents />
884
+ * </AnnotationProvider>
885
+ * ```
886
+ */
887
+ declare function AnnotationProvider({ annotationManager, children }: AnnotationProviderProps): react_jsx_runtime.JSX.Element;
888
+ /**
889
+ * Hook to access the AnnotationManager
890
+ *
891
+ * @throws Error if used outside AnnotationProvider
892
+ * @returns AnnotationManager instance
893
+ */
894
+ declare function useAnnotationManager(): AnnotationManager;
895
+
896
+ /**
897
+ * Subscribe to a bus event with automatic cleanup.
898
+ *
899
+ * Two buses exist: the app-scoped bus on `SemiontBrowser` (panel, shell,
900
+ * tabs, nav, settings — events that must work without a KB session) and
901
+ * the per-session bus on `SemiontClient` (mark, beckon, gather,
902
+ * match, bind, yield, browse — events tied to a live KB). This hook
903
+ * subscribes to BOTH so components don't need to know which scope a
904
+ * channel is on. Each channel only fires on one bus, so there's no
905
+ * double-delivery.
906
+ *
907
+ * Stable-handler pattern: the ref-wrapped handler means `handler` itself
908
+ * can change on every render without causing a re-subscription.
909
+ *
910
+ * @example
911
+ * ```tsx
912
+ * useEventSubscription('mark:create-ok', ({ annotationId }) => {
913
+ * triggerSparkleAnimation(annotationId);
914
+ * });
915
+ * ```
916
+ */
917
+ declare function useEventSubscription<K extends keyof EventMap>(eventName: K, handler: (payload: EventMap[K]) => void): void;
918
+ /**
919
+ * Subscribe to multiple bus events at once. Same semantics as
920
+ * `useEventSubscription`, batched — each channel is subscribed on both
921
+ * the app bus (`SemiontBrowser`) and the session bus
922
+ * (`SemiontClient`, when a session is active).
923
+ *
924
+ * @example
925
+ * ```tsx
926
+ * useEventSubscriptions({
927
+ * 'mark:create-ok': ({ annotationId }) => handleCreated(annotationId),
928
+ * 'panel:toggle': ({ panel }) => console.log('toggled', panel),
929
+ * });
930
+ * ```
931
+ */
932
+ declare function useEventSubscriptions(subscriptions: {
933
+ [K in keyof EventMap]?: (payload: EventMap[K]) => void;
934
+ }): void;
935
+
936
+ interface ResourceAnnotationsContextType {
937
+ newAnnotationIds: Set<string>;
938
+ markAnnotation: (rUri: ResourceId, motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging', selector: Selector | Selector[], body?: any[]) => Promise<string | undefined>;
939
+ clearNewAnnotationId: (id: AnnotationId) => void;
940
+ triggerSparkleAnimation: (annotationId: string) => void;
941
+ }
942
+ declare function ResourceAnnotationsProvider({ children }: {
943
+ children: React__default.ReactNode;
944
+ }): react_jsx_runtime.JSX.Element;
945
+ declare function useResourceAnnotations(): ResourceAnnotationsContextType;
946
+
947
+ /**
948
+ * Standard Link component interface
949
+ * Compatible with Next.js Link, React Router Link, etc.
950
+ *
951
+ * Components accept Link as a prop to remain framework-agnostic.
952
+ * Apps provide their framework-specific Link component (Next.js, React Router, etc.)
953
+ */
954
+ interface LinkComponentProps {
955
+ href: string;
956
+ children: React__default.ReactNode;
957
+ className?: string;
958
+ title?: string;
959
+ onClick?: (e: React__default.MouseEvent) => void;
960
+ [key: string]: any;
961
+ }
962
+ /**
963
+ * Route builder interface
964
+ * Apps provide concrete implementations for their routing scheme
965
+ *
966
+ * Components accept routes as a prop to build URLs without framework dependencies.
967
+ *
968
+ * @example
969
+ * ```tsx
970
+ * // In app (e.g., frontend/src/lib/routing.ts)
971
+ * export const routes: RouteBuilder = {
972
+ * resourceDetail: (id) => `/know/resource/${id}`,
973
+ * userProfile: (id) => `/users/${id}`,
974
+ * search: (query) => `/search?q=${query}`,
975
+ * home: () => '/',
976
+ * };
977
+ *
978
+ * // Pass to components as props
979
+ * <MyComponent Link={Link} routes={routes} />
980
+ * ```
981
+ */
982
+ interface RouteBuilder {
983
+ /** Resource detail page */
984
+ resourceDetail: (id: string) => string;
985
+ /** User profile page */
986
+ userProfile: (id: string) => string;
987
+ /** Search page with query */
988
+ search: (query: string) => string;
989
+ /** Home/root page */
990
+ home: () => string;
991
+ /** About page */
992
+ about?: () => string;
993
+ /** Privacy policy page */
994
+ privacy?: () => string;
995
+ /** Terms of service page */
996
+ terms?: () => string;
997
+ /** Knowledge base page */
998
+ knowledge?: () => string;
999
+ /** Moderation dashboard */
1000
+ moderate?: () => string;
1001
+ /** Admin dashboard */
1002
+ admin?: () => string;
1003
+ }
1004
+
1005
+ declare const AVAILABLE_LOCALES: readonly ["ar", "bn", "cs", "da", "de", "el", "en", "es", "fa", "fi", "fr", "he", "hi", "id", "it", "ja", "ko", "ms", "nl", "no", "pl", "pt", "ro", "sv", "th", "tr", "uk", "vi", "zh"];
1006
+ type AvailableLocale = typeof AVAILABLE_LOCALES[number];
1007
+ interface TranslationProviderProps {
1008
+ /**
1009
+ * Option 1: Provide a complete TranslationManager implementation
1010
+ */
1011
+ translationManager?: TranslationManager;
1012
+ /**
1013
+ * Option 2: Use built-in translations by specifying a locale
1014
+ * When adding new locales, just add the JSON file and update AVAILABLE_LOCALES
1015
+ */
1016
+ locale?: string;
1017
+ /**
1018
+ * Loading component to show while translations are being loaded
1019
+ * Only relevant when using dynamic locale loading
1020
+ */
1021
+ loadingComponent?: ReactNode;
1022
+ children: ReactNode;
1023
+ }
1024
+ /**
1025
+ * Provider for translation management with dynamic loading
1026
+ *
1027
+ * Three modes of operation:
1028
+ * 1. No provider: Components use default English strings
1029
+ * 2. With locale prop: Dynamically loads translations for that locale
1030
+ * 3. With translationManager: Use custom translation implementation
1031
+ */
1032
+ declare function TranslationProvider({ translationManager, locale, loadingComponent, children, }: TranslationProviderProps): react_jsx_runtime.JSX.Element;
1033
+ /**
1034
+ * Hook to access translations within a namespace
1035
+ *
1036
+ * Works in three modes:
1037
+ * 1. Without provider: Returns default English translations
1038
+ * 2. With provider using locale: Returns dynamically loaded translations for that locale
1039
+ * 3. With custom provider: Uses the custom translation manager
1040
+ *
1041
+ * @param namespace - Translation namespace (e.g., 'Toolbar', 'ResourceViewer')
1042
+ * @returns Function to translate keys within the namespace
1043
+ */
1044
+ declare function useTranslations(namespace: string): (key: string, params?: Record<string, any>) => string;
1045
+ /**
1046
+ * Hook to preload translations for a locale
1047
+ * Useful for preloading translations before navigation
1048
+ */
1049
+ declare function usePreloadTranslations(): {
1050
+ preload: (locale: string) => Promise<boolean>;
1051
+ isLoaded: (locale: string) => boolean;
1052
+ };
1053
+
1054
+ /**
1055
+ * Pure logic extracted from CodeMirrorRenderer
1056
+ *
1057
+ * These functions have zero dependency on CodeMirror's DOM or React.
1058
+ * They handle position conversion, tooltip generation, and decoration metadata.
1059
+ */
1060
+
1061
+ interface TextSegment {
1062
+ exact: string;
1063
+ annotation?: Annotation;
1064
+ start: number;
1065
+ end: number;
1066
+ }
1067
+
1068
+ interface Props$b {
1069
+ content: string;
1070
+ segments?: TextSegment[];
1071
+ onTextSelect?: (exact: string, position: {
1072
+ start: number;
1073
+ end: number;
1074
+ }) => void;
1075
+ onChange?: (content: string) => void;
1076
+ editable?: boolean;
1077
+ newAnnotationIds?: Set<string>;
1078
+ hoveredAnnotationId?: string | null;
1079
+ scrollToAnnotationId?: string | null;
1080
+ sourceView?: boolean;
1081
+ showLineNumbers?: boolean;
1082
+ enableWidgets?: boolean;
1083
+ session?: SemiontSession | null | undefined;
1084
+ getTargetResourceName?: (resourceId: string) => string | undefined;
1085
+ generatingReferenceId?: string | null;
1086
+ hoverDelayMs: number;
1087
+ }
1088
+ declare function CodeMirrorRenderer({ content, segments, onChange, editable, newAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, session, getTargetResourceName, generatingReferenceId, hoverDelayMs }: Props$b): react_jsx_runtime.JSX.Element;
1089
+
1090
+ type Motivation$6 = components['schemas']['Motivation'];
1091
+ type JobProgress$7 = components['schemas']['JobProgress'];
1092
+ interface AnnotateReferencesProgressWidgetProps {
1093
+ progress: JobProgress$7 | null;
1094
+ annotationType?: Motivation$6 | 'reference';
1095
+ }
1096
+ /**
1097
+ * Widget for displaying reference annotation progress with cancel functionality
1098
+ *
1099
+ * @emits job:cancel-requested - User requested to cancel annotation job. Payload: { jobType: string }
1100
+ */
1101
+ declare function AnnotateReferencesProgressWidget({ progress, annotationType }: AnnotateReferencesProgressWidgetProps): react_jsx_runtime.JSX.Element | null;
1102
+
1103
+ interface Props$a {
1104
+ children: ReactNode;
1105
+ fallback?: (error: Error, reset: () => void) => ReactNode;
1106
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
1107
+ }
1108
+ interface State {
1109
+ hasError: boolean;
1110
+ error: Error | null;
1111
+ errorInfo: ErrorInfo | null;
1112
+ }
1113
+ /**
1114
+ * Generic Error Boundary component that catches JavaScript errors
1115
+ * in child components and displays a fallback UI.
1116
+ */
1117
+ declare class ErrorBoundary extends Component<Props$a, State> {
1118
+ constructor(props: Props$a);
1119
+ static getDerivedStateFromError(error: Error): State;
1120
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
1121
+ handleReset: () => void;
1122
+ render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | React$1.ReactPortal | React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
1123
+ }
1124
+ /**
1125
+ * Specialized error boundary for async components
1126
+ */
1127
+ declare function AsyncErrorBoundary({ children }: {
1128
+ children: ReactNode;
1129
+ }): react_jsx_runtime.JSX.Element;
1130
+
1131
+ interface ProtectedErrorBoundaryProps {
1132
+ children: React__default.ReactNode;
1133
+ /**
1134
+ * Values that, when any change, reset the boundary back to its non-error
1135
+ * state. Apps typically pass `[location.pathname]` so navigating away from
1136
+ * a crashed page automatically recovers.
1137
+ */
1138
+ resetKeys?: unknown[];
1139
+ }
1140
+ /**
1141
+ * Error boundary for protected (authenticated) routes.
1142
+ *
1143
+ * Catches unexpected render-time crashes inside the protected tree and
1144
+ * shows a generic "something went wrong" fallback with a refresh option.
1145
+ *
1146
+ * NOT auth-specific. Auth state changes (sign-in, sign-out, expiry) flow
1147
+ * through the KnowledgeBaseSession context, not exceptions — so this
1148
+ * boundary will never catch an "auth error" in normal operation. Its job
1149
+ * is purely to keep a render bug from blanking the screen.
1150
+ *
1151
+ * The optional `resetKeys` prop lets callers wire automatic recovery on
1152
+ * navigation (e.g. `resetKeys={[location.pathname]}`).
1153
+ */
1154
+ declare function ProtectedErrorBoundary({ children, resetKeys, }: ProtectedErrorBoundaryProps): react_jsx_runtime.JSX.Element;
1155
+
1156
+ interface LiveRegionContextType {
1157
+ announce: (message: string, priority?: 'polite' | 'assertive') => void;
1158
+ }
1159
+ declare function useLiveRegion(): LiveRegionContextType;
1160
+ interface LiveRegionProviderProps {
1161
+ children: React__default.ReactNode;
1162
+ }
1163
+ declare function LiveRegionProvider({ children }: LiveRegionProviderProps): react_jsx_runtime.JSX.Element;
1164
+ declare function useSearchAnnouncements(): {
1165
+ announceSearchResults: (count: number, query: string) => void;
1166
+ announceSearching: () => void;
1167
+ };
1168
+ declare function useDocumentAnnouncements(annotators?: Record<string, Annotator>): {
1169
+ announceDocumentSaved: () => void;
1170
+ announceDocumentDeleted: () => void;
1171
+ announceAnnotationCreated: (annotation: Annotation) => void;
1172
+ announceAnnotationDeleted: () => void;
1173
+ announceAnnotationUpdated: (annotation: Annotation) => void;
1174
+ announceError: (message: string) => void;
1175
+ };
1176
+ declare function useResourceLoadingAnnouncements(): {
1177
+ announceResourceLoading: (resourceName?: string) => void;
1178
+ announceResourceLoaded: (resourceName: string) => void;
1179
+ announceResourceLoadError: (resourceName?: string) => void;
1180
+ announceResourceUpdating: (resourceName: string) => void;
1181
+ };
1182
+ declare function useFormAnnouncements(): {
1183
+ announceFormSubmitting: () => void;
1184
+ announceFormSuccess: (message?: string) => void;
1185
+ announceFormError: (message?: string) => void;
1186
+ announceFormValidationError: (fieldCount: number) => void;
1187
+ };
1188
+ declare function useLanguageChangeAnnouncements(): {
1189
+ announceLanguageChanging: (newLanguage: string) => void;
1190
+ announceLanguageChanged: (newLanguage: string) => void;
1191
+ };
1192
+
1193
+ interface ResizeHandleProps {
1194
+ /** Callback fired when resize occurs */
1195
+ onResize: (newWidth: number) => void;
1196
+ /** Minimum allowed width in pixels */
1197
+ minWidth: number;
1198
+ /** Maximum allowed width in pixels */
1199
+ maxWidth: number;
1200
+ /** Position of handle - left or right edge */
1201
+ position?: 'left' | 'right';
1202
+ /** Aria label for accessibility */
1203
+ ariaLabel?: string;
1204
+ }
1205
+ /**
1206
+ * Draggable resize handle for panels and sidebars
1207
+ *
1208
+ * Features:
1209
+ * - Mouse drag to resize
1210
+ * - Keyboard navigation (Arrow keys: ±10px, Shift+Arrow: ±50px)
1211
+ * - Enforces min/max constraints
1212
+ * - Visual feedback on hover and drag
1213
+ * - Accessible (WCAG compliant)
1214
+ *
1215
+ * @example
1216
+ * ```tsx
1217
+ * <div className="panel" style={{ width: `${width}px` }}>
1218
+ * <ResizeHandle
1219
+ * onResize={setWidth}
1220
+ * minWidth={256}
1221
+ * maxWidth={800}
1222
+ * position="left"
1223
+ * />
1224
+ * <div>Panel content</div>
1225
+ * </div>
1226
+ * ```
1227
+ */
1228
+ declare function ResizeHandle({ onResize, minWidth, maxWidth, position, ariaLabel }: ResizeHandleProps): react_jsx_runtime.JSX.Element;
1229
+
1230
+ interface ResourceTagsInlineProps {
1231
+ resourceId: string;
1232
+ tags: string[];
1233
+ isEditing: boolean;
1234
+ onUpdate: (tags: string[]) => Promise<void>;
1235
+ disabled?: boolean;
1236
+ }
1237
+ declare function ResourceTagsInline({ tags }: ResourceTagsInlineProps): react_jsx_runtime.JSX.Element | null;
1238
+
1239
+ type ToastType = 'success' | 'error' | 'info' | 'warning';
1240
+ interface ToastMessage {
1241
+ id: string;
1242
+ message: string;
1243
+ type: ToastType;
1244
+ duration?: number;
1245
+ }
1246
+ interface ToastContainerProps {
1247
+ toasts: ToastMessage[];
1248
+ onClose: (id: string) => void;
1249
+ }
1250
+ declare function ToastContainer({ toasts, onClose }: ToastContainerProps): React__default.ReactPortal | null;
1251
+ interface ToastContextType {
1252
+ showToast: (message: string, type?: ToastType, duration?: number) => void;
1253
+ showSuccess: (message: string, duration?: number) => void;
1254
+ showError: (message: string, duration?: number) => void;
1255
+ showWarning: (message: string, duration?: number) => void;
1256
+ showInfo: (message: string, duration?: number) => void;
1257
+ }
1258
+ declare function ToastProvider({ children }: {
1259
+ children: React__default.ReactNode;
1260
+ }): react_jsx_runtime.JSX.Element;
1261
+ declare function useToast(): ToastContextType;
1262
+
1263
+ type ToolbarContext = 'document' | 'simple';
1264
+ interface Props$9<T extends string = string> {
1265
+ context: ToolbarContext;
1266
+ activePanel: T | null;
1267
+ isArchived?: boolean;
1268
+ }
1269
+ /**
1270
+ * Toolbar component for panel navigation
1271
+ *
1272
+ * @emits panel:toggle - Toggle panel visibility. Payload: { panel: string }
1273
+ */
1274
+ declare function Toolbar<T extends string = string>({ context, activePanel, isArchived }: Props$9<T>): react_jsx_runtime.JSX.Element;
1275
+
1276
+ interface SettingsPanelProps {
1277
+ showLineNumbers: boolean;
1278
+ theme: 'light' | 'dark' | 'system';
1279
+ locale: string;
1280
+ isPendingLocaleChange?: boolean;
1281
+ hoverDelayMs: number;
1282
+ }
1283
+ /**
1284
+ * Settings panel for application preferences
1285
+ *
1286
+ * @emits settings:locale-changed - Locale changed by user. Payload: { locale: string }
1287
+ * @emits settings:line-numbers-toggled - Line numbers toggled on/off. Payload: undefined
1288
+ * @emits settings:theme-changed - Theme changed by user. Payload: { theme: 'light' | 'dark' | 'system' }
1289
+ * @emits settings:hover-delay-changed - Hover delay changed by user. Payload: { hoverDelayMs: number }
1290
+ */
1291
+ declare function SettingsPanel({ showLineNumbers, theme, locale, isPendingLocaleChange, hoverDelayMs }: SettingsPanelProps): react_jsx_runtime.JSX.Element;
1292
+
1293
+ interface JsonLdViewProps {
1294
+ annotation: Annotation;
1295
+ onBack: () => void;
1296
+ }
1297
+ declare function JsonLdView({ annotation, onBack }: JsonLdViewProps): react_jsx_runtime.JSX.Element;
1298
+
1299
+ interface SelectedTextDisplayProps {
1300
+ exact: string;
1301
+ }
1302
+ declare function SelectedTextDisplay({ exact }: SelectedTextDisplayProps): react_jsx_runtime.JSX.Element;
1303
+ interface EntityTypeBadgesProps {
1304
+ entityTypes: string;
1305
+ }
1306
+ declare function EntityTypeBadges({ entityTypes }: EntityTypeBadgesProps): react_jsx_runtime.JSX.Element | null;
1307
+ interface PopupHeaderProps {
1308
+ title: string;
1309
+ selectedText?: string;
1310
+ onClose: () => void;
1311
+ }
1312
+ declare function PopupHeader({ title, selectedText, onClose }: PopupHeaderProps): react_jsx_runtime.JSX.Element;
1313
+ interface PopupContainerProps {
1314
+ children: React__default.ReactNode;
1315
+ position: {
1316
+ x: number;
1317
+ y: number;
1318
+ };
1319
+ onClose: () => void;
1320
+ isOpen: boolean;
1321
+ wide?: boolean;
1322
+ }
1323
+ declare function PopupContainer({ children, position, onClose, isOpen, wide }: PopupContainerProps): react_jsx_runtime.JSX.Element;
1324
+
1325
+ interface AnnotationOverlayProps {
1326
+ annotations: Annotation[];
1327
+ imageWidth: number;
1328
+ imageHeight: number;
1329
+ displayWidth: number;
1330
+ displayHeight: number;
1331
+ session?: SemiontSession | null | undefined;
1332
+ hoveredAnnotationId?: string | null;
1333
+ selectedAnnotationId?: string | null;
1334
+ hoverDelayMs: number;
1335
+ }
1336
+ /**
1337
+ * Render annotation overlay - displays existing annotations as SVG shapes
1338
+ *
1339
+ * @emits beckon:hover - Annotation hovered or unhovered. Payload: { annotationId: string | null }
1340
+ * @emits browse:click - Annotation clicked. Payload: { annotationId: string, motivation: Motivation }
1341
+ */
1342
+ declare function AnnotationOverlay({ annotations, imageWidth, imageHeight, displayWidth, displayHeight, session, hoveredAnnotationId, selectedAnnotationId, hoverDelayMs }: AnnotationOverlayProps): react_jsx_runtime.JSX.Element;
1343
+
1344
+ type DrawingMode = 'rectangle' | 'polygon' | 'circle' | 'freeform' | null;
1345
+ interface SvgDrawingCanvasProps {
1346
+ imageUrl: string;
1347
+ existingAnnotations?: Annotation[];
1348
+ drawingMode: DrawingMode;
1349
+ selectedMotivation?: SelectionMotivation | null;
1350
+ session?: SemiontSession | null | undefined;
1351
+ hoveredAnnotationId?: string | null;
1352
+ selectedAnnotationId?: string | null;
1353
+ hoverDelayMs?: number;
1354
+ }
1355
+ /**
1356
+ * SVG-based drawing canvas for creating image annotations with shapes
1357
+ *
1358
+ * @emits browse:click - Annotation clicked on canvas. Payload: { annotationId: string, motivation: Motivation }
1359
+ * @emits mark:requested - New annotation drawn on canvas. Payload: { selector: SvgSelector, motivation: SelectionMotivation }
1360
+ */
1361
+ declare function SvgDrawingCanvas({ imageUrl, existingAnnotations, drawingMode, selectedMotivation, session, hoveredAnnotationId, selectedAnnotationId }: SvgDrawingCanvasProps): react_jsx_runtime.JSX.Element;
1362
+
1363
+ interface KeyboardShortcutsHelpModalProps {
1364
+ isOpen: boolean;
1365
+ onClose: () => void;
1366
+ }
1367
+ declare function KeyboardShortcutsHelpModal({ isOpen, onClose }: KeyboardShortcutsHelpModalProps): react_jsx_runtime.JSX.Element;
1368
+
1369
+ /**
1370
+ * Modal that surfaces when a 403 forbidden error is reported via
1371
+ * the active session's `signals.notifyPermissionDenied(...)`.
1372
+ *
1373
+ * Reads `permissionDeniedAt$` and `permissionDeniedMessage$` from the
1374
+ * active `SessionSignals`. The signals instance clears the
1375
+ * flag when the user dismisses the modal. Modal state lives on
1376
+ * signals (not the session itself) so headless sessions
1377
+ * (workers/CLIs) don't carry dead observables.
1378
+ */
1379
+ declare function PermissionDeniedModal(): react_jsx_runtime.JSX.Element;
1380
+
1381
+ /**
1382
+ * Modal that surfaces when the active KB's session expires (a 401
1383
+ * surfaced by the session's own JWT validation or by the host's
1384
+ * error-routing path).
1385
+ *
1386
+ * Reads `sessionExpiredAt$` from the active `SessionSignals`.
1387
+ * When the user dismisses the modal, the signals instance clears the
1388
+ * flag. Modal state lives on signals (not the session itself) so
1389
+ * headless sessions (workers/CLIs) don't carry dead observables.
1390
+ */
1391
+ declare function SessionExpiredModal(): react_jsx_runtime.JSX.Element;
1392
+
1393
+ interface Props$8 {
1394
+ content: string;
1395
+ mimeType?: string;
1396
+ resourceUri?: string;
1397
+ annotations: AnnotationsCollection;
1398
+ uiState: AnnotationUIState;
1399
+ onUIStateChange?: (state: Partial<AnnotationUIState>) => void;
1400
+ editable?: boolean;
1401
+ enableWidgets?: boolean;
1402
+ getTargetResourceName?: (resourceId: string) => string | undefined;
1403
+ generatingReferenceId?: string | null;
1404
+ showLineNumbers?: boolean;
1405
+ hoverDelayMs?: number;
1406
+ annotateMode: boolean;
1407
+ }
1408
+ /**
1409
+ * View component for annotating resources with text selection and drawing
1410
+ *
1411
+ * @emits mark:requested - User requested to create annotation. Payload: { selector: Selector | Selector[], motivation: SelectionMotivation }
1412
+ * @subscribes mark:selection-changed - Toolbar selection changed. Payload: { motivation: string | null }
1413
+ * @subscribes mark:click-changed - Toolbar click action changed. Payload: { action: string }
1414
+ * @subscribes mark:shape-changed - Toolbar shape changed. Payload: { shape: string }
1415
+ * @subscribes beckon:hover - Annotation hovered. Payload: { annotationId: string | null }
1416
+ */
1417
+ declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode }: Props$8): react_jsx_runtime.JSX.Element;
1418
+
1419
+ interface Props$7 {
1420
+ rUri: ResourceId;
1421
+ hoveredAnnotationId?: string | null;
1422
+ onEventHover?: (annotationId: string | null) => void;
1423
+ onEventClick?: (annotationId: string | null) => void;
1424
+ Link: React__default.ComponentType<LinkComponentProps>;
1425
+ routes: RouteBuilder;
1426
+ }
1427
+ declare function AnnotationHistory({ rUri, hoveredAnnotationId, onEventHover, onEventClick, Link, routes }: Props$7): react_jsx_runtime.JSX.Element | null;
1428
+
1429
+ interface Props$6 {
1430
+ content: string;
1431
+ mimeType: string;
1432
+ resourceUri: string;
1433
+ annotations: AnnotationsCollection;
1434
+ hoveredAnnotationId?: string | null;
1435
+ selectedClick?: ClickAction;
1436
+ annotateMode: boolean;
1437
+ hoverDelayMs?: number;
1438
+ }
1439
+ /**
1440
+ * View component for browsing annotated resources in read-only mode.
1441
+ *
1442
+ * Two-layer rendering:
1443
+ * - Layer 1: Markdown renders once (MemoizedMarkdown, cached by content)
1444
+ * - Layer 2: Annotation overlay applied via DOM Range API after paint
1445
+ *
1446
+ * @emits browse:click - User clicked on annotation. Payload: { annotationId: string, motivation: Motivation }
1447
+ * @emits beckon:hover - User hovered over annotation. Payload: { annotationId: string | null }
1448
+ *
1449
+ * @subscribes beckon:hover - Highlight annotation on hover. Payload: { annotationId: string | null }
1450
+ * @subscribes beckon:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
1451
+ */
1452
+ declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, annotateMode, hoverDelayMs }: Props$6) => react_jsx_runtime.JSX.Element>;
1453
+
1454
+ type TranslateFn$4 = (key: string, params?: Record<string, string | number>) => string;
1455
+ interface Props$5 {
1456
+ event: StoredEventLike;
1457
+ annotations: any[];
1458
+ allEvents: StoredEventLike[];
1459
+ isRelated: boolean;
1460
+ t: TranslateFn$4;
1461
+ Link: React__default.ComponentType<LinkComponentProps>;
1462
+ routes: RouteBuilder;
1463
+ onEventRef?: (annotationId: string | null, element: HTMLElement | null) => void;
1464
+ onEventClick?: (annotationId: string | null) => void;
1465
+ onEventHover?: (annotationId: string | null) => void;
1466
+ }
1467
+ declare function HistoryEvent({ event, annotations, allEvents, isRelated, t, Link, routes, onEventRef, onEventClick, onEventHover }: Props$5): react_jsx_runtime.JSX.Element;
1468
+
1469
+ /**
1470
+ * ResourceViewer - Display and interact with resource content and annotations
1471
+ *
1472
+ * This component uses event-driven architecture for real-time updates:
1473
+ * - Subscribes to make-meaning events (mark:added, mark:removed, mark:body-updated)
1474
+ * - Automatically invalidates cache when annotations change
1475
+ * - No manual refetch needed - events handle cache invalidation
1476
+ *
1477
+ * Requirements:
1478
+ * - Must be wrapped in SemiontProvider (which owns the session's event bus)
1479
+ * - Must be wrapped in CacheContext (provides cache manager)
1480
+ *
1481
+ * Event flow:
1482
+ * make-meaning → EventLog → SSE → EventBus → ResourceViewer → Cache invalidation
1483
+ *
1484
+ * Phase 2 complete: Event-based cache invalidation replaces manual refetch
1485
+ * Phase 3 complete: Fully event-driven - all user interactions use unified event bus
1486
+ */
1487
+ interface Props$4 {
1488
+ resource: ResourceDescriptor & {
1489
+ content: string;
1490
+ };
1491
+ annotations: AnnotationsCollection;
1492
+ generatingReferenceId?: string | null;
1493
+ showLineNumbers?: boolean;
1494
+ hoverDelayMs?: number;
1495
+ hoveredAnnotationId?: string | null;
1496
+ }
1497
+ /**
1498
+ * @emits mark:delete - User requested to delete annotation. Payload: { annotationId: string }
1499
+ * @emits panel:open - Request to open panel with annotation. Payload: { panel: string, scrollToAnnotationId?: string, motivation?: Motivation }
1500
+ *
1501
+ * @subscribes mark:mode-toggled - Toggles between browse and annotate mode. Payload: { mode: 'browse' | 'annotate' }
1502
+ * @subscribes mark:added - New annotation was added. Payload: { annotation: Annotation }
1503
+ * @subscribes mark:removed - Annotation was removed. Payload: { annotationId: string }
1504
+ * @subscribes mark:body-updated - Annotation was updated. Payload: { annotation: Annotation }
1505
+ * @subscribes mark:selection-changed - Text selection tool changed. Payload: { selection: boolean }
1506
+ * @subscribes mark:click-changed - Click annotation tool changed. Payload: { click: 'detail' | 'scroll' | null }
1507
+ * @subscribes mark:shape-changed - Drawing shape changed. Payload: { shape: string }
1508
+ * @subscribes browse:click - User clicked on annotation. Payload: { annotationId: string }
1509
+ */
1510
+ declare function ResourceViewer({ resource, annotations, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp }: Props$4): react_jsx_runtime.JSX.Element;
1511
+
1512
+ interface AssessmentEntryProps {
1513
+ assessment: Annotation;
1514
+ isFocused: boolean;
1515
+ isHovered?: boolean;
1516
+ ref?: Ref<HTMLDivElement>;
1517
+ }
1518
+ declare function AssessmentEntry({ assessment, isFocused, isHovered, ref, }: AssessmentEntryProps): react_jsx_runtime.JSX.Element;
1519
+
1520
+ type Motivation$5 = components['schemas']['Motivation'];
1521
+ type JobProgress$6 = components['schemas']['JobProgress'];
1522
+ interface PendingAnnotation$5 {
1523
+ selector: Selector | Selector[];
1524
+ motivation: Motivation$5;
1525
+ }
1526
+ interface AssessmentPanelProps {
1527
+ annotations: Annotation[];
1528
+ pendingAnnotation: PendingAnnotation$5 | null;
1529
+ isAssisting?: boolean;
1530
+ progress?: JobProgress$6 | null;
1531
+ locale?: string;
1532
+ /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
1533
+ sourceLanguage?: string;
1534
+ annotateMode?: boolean;
1535
+ scrollToAnnotationId?: string | null;
1536
+ onScrollCompleted?: () => void;
1537
+ hoveredAnnotationId?: string | null;
1538
+ }
1539
+ /**
1540
+ * Panel for managing assessment annotations with text input
1541
+ *
1542
+ * @emits mark:create - Create new assessment annotation. Payload: { motivation: 'assessing', selector: Selector | Selector[], body: Body[] }
1543
+ * @emits mark:cancel-pending - Cancel pending assessment annotation. Payload: undefined
1544
+ * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1545
+ */
1546
+ declare function AssessmentPanel({ annotations, pendingAnnotation, isAssisting, progress, locale, sourceLanguage, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: AssessmentPanelProps): react_jsx_runtime.JSX.Element;
1547
+
1548
+ interface Props$3 {
1549
+ /**
1550
+ * Connection state from `client.actor.state$`. See
1551
+ * `packages/api-client/src/state/domain/actor-state-unit.ts`.
1552
+ *
1553
+ * UI mapping:
1554
+ * `open` | `reconnecting` | `initial` | `connecting`
1555
+ * → treated as "healthy" (green dot, "Live" label, event count visible).
1556
+ * `reconnecting` is specifically INCLUDED in healthy because a
1557
+ * brief reconnect (mount churn, channel-set change, quick blip)
1558
+ * shouldn't alarm the user. The 100 ms reconnect debounce and
1559
+ * sub-second fetch retry make `reconnecting` a transient state.
1560
+ * `degraded` | `closed`
1561
+ * → treated as "disconnected" (red dot, "Disconnected" label).
1562
+ * `degraded` is the 3 s threshold at which the state machine
1563
+ * decides the disconnect is sustained; this is the UI-banner
1564
+ * trigger the plan was designed around.
1565
+ */
1566
+ state: ConnectionState;
1567
+ eventCount: number;
1568
+ lastEventTimestamp?: string;
1569
+ knowledgeBaseName?: string;
1570
+ }
1571
+ declare function CollaborationPanel({ state, eventCount, lastEventTimestamp, knowledgeBaseName }: Props$3): react_jsx_runtime.JSX.Element;
1572
+
1573
+ interface CommentEntryProps {
1574
+ comment: Annotation;
1575
+ isFocused: boolean;
1576
+ isHovered?: boolean;
1577
+ annotateMode?: boolean;
1578
+ ref?: Ref<HTMLDivElement>;
1579
+ }
1580
+ declare function CommentEntry({ comment, isFocused, isHovered, annotateMode, ref, }: CommentEntryProps): react_jsx_runtime.JSX.Element;
1581
+
1582
+ type Motivation$4 = components['schemas']['Motivation'];
1583
+ type JobProgress$5 = components['schemas']['JobProgress'];
1584
+ interface PendingAnnotation$4 {
1585
+ selector: Selector | Selector[];
1586
+ motivation: Motivation$4;
1587
+ }
1588
+ interface CommentsPanelProps {
1589
+ annotations: Annotation[];
1590
+ pendingAnnotation: PendingAnnotation$4 | null;
1591
+ annotateMode?: boolean;
1592
+ isAssisting?: boolean;
1593
+ progress?: JobProgress$5 | null;
1594
+ locale?: string;
1595
+ /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
1596
+ sourceLanguage?: string;
1597
+ scrollToAnnotationId?: string | null;
1598
+ onScrollCompleted?: () => void;
1599
+ hoveredAnnotationId?: string | null;
1600
+ }
1601
+ /**
1602
+ * Panel for managing comment annotations with text input
1603
+ *
1604
+ * @emits mark:create - Create new comment annotation. Payload: { motivation: 'commenting', selector: Selector | Selector[], body: Body[] }
1605
+ * @emits mark:cancel-pending - Cancel pending comment annotation. Payload: undefined
1606
+ * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1607
+ */
1608
+ declare function CommentsPanel({ annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): react_jsx_runtime.JSX.Element;
1609
+
1610
+ type JobProgress$4 = components['schemas']['JobProgress'];
1611
+ interface AssistSectionProps {
1612
+ annotationType: 'highlight' | 'assessment' | 'comment';
1613
+ isAssisting: boolean;
1614
+ /** User UI locale — written into the annotation body's `language` field for comment/assessment. */
1615
+ locale?: string;
1616
+ /** BCP-47 tag of the resource being analyzed. Forwarded to the prompt so the LLM analyzes non-English source correctly. */
1617
+ sourceLanguage?: string;
1618
+ progress?: JobProgress$4 | null | undefined;
1619
+ }
1620
+ /**
1621
+ * Shared assist section for Highlight, Assessment, and Comment panels
1622
+ *
1623
+ * Provides:
1624
+ * - Optional instructions textarea
1625
+ * - Optional tone selector (for comments)
1626
+ * - Assist button with sparkle animation
1627
+ * - Progress display during annotation assist
1628
+ *
1629
+ * @emits mark:assist-request - Start assist for annotation type. Payload: { motivation: Motivation, options: { instructions?: string, tone?: string, density?: number } }
1630
+ * @emits mark:progress-dismiss - Dismiss the annotation progress display
1631
+ */
1632
+ declare function AssistSection({ annotationType, isAssisting, locale, sourceLanguage, progress, }: AssistSectionProps): react_jsx_runtime.JSX.Element;
1633
+
1634
+ interface HighlightEntryProps {
1635
+ highlight: Annotation;
1636
+ isFocused: boolean;
1637
+ isHovered?: boolean;
1638
+ ref?: Ref<HTMLDivElement>;
1639
+ }
1640
+ declare function HighlightEntry({ highlight, isFocused, isHovered, ref, }: HighlightEntryProps): react_jsx_runtime.JSX.Element;
1641
+
1642
+ type Motivation$3 = components['schemas']['Motivation'];
1643
+ type JobProgress$3 = components['schemas']['JobProgress'];
1644
+ interface PendingAnnotation$3 {
1645
+ selector: Selector | Selector[];
1646
+ motivation: Motivation$3;
1647
+ }
1648
+ interface HighlightPanelProps {
1649
+ annotations: Annotation[];
1650
+ pendingAnnotation: PendingAnnotation$3 | null;
1651
+ isAssisting?: boolean;
1652
+ progress?: JobProgress$3 | null;
1653
+ annotateMode?: boolean;
1654
+ scrollToAnnotationId?: string | null;
1655
+ onScrollCompleted?: () => void;
1656
+ hoveredAnnotationId?: string | null;
1657
+ /** BCP-47 tag of the resource being analyzed — forwarded to the assist call so the LLM analyzes non-English source correctly. */
1658
+ sourceLanguage?: string;
1659
+ }
1660
+ /**
1661
+ * Panel for managing highlight annotations with auto-creation
1662
+ *
1663
+ * @emits mark:create - Create new highlight annotation (auto-triggered). Payload: { motivation: 'highlighting', selector: Selector | Selector[], body: Body[] }
1664
+ * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1665
+ */
1666
+ declare function HighlightPanel({ annotations, pendingAnnotation, isAssisting, progress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, sourceLanguage, }: HighlightPanelProps): react_jsx_runtime.JSX.Element;
1667
+
1668
+ type SemiontResource$1 = components['schemas']['ResourceDescriptor'];
1669
+ interface Props$2 {
1670
+ resource: SemiontResource$1;
1671
+ }
1672
+ declare function JsonLdPanel({ resource: semiontResource }: Props$2): react_jsx_runtime.JSX.Element;
1673
+
1674
+ interface PanelHeaderProps {
1675
+ annotationType: 'highlight' | 'reference' | 'assessment' | 'comment' | 'tag';
1676
+ count: number;
1677
+ title: string;
1678
+ }
1679
+ /**
1680
+ * Shared header for annotation panels
1681
+ *
1682
+ * Displays the annotation icon, translated title, and count in a consistent format
1683
+ */
1684
+ declare function PanelHeader({ count, title }: PanelHeaderProps): react_jsx_runtime.JSX.Element;
1685
+
1686
+ interface ReferenceEntryProps {
1687
+ reference: Annotation;
1688
+ isFocused: boolean;
1689
+ isHovered?: boolean;
1690
+ routes: RouteBuilder;
1691
+ annotateMode?: boolean;
1692
+ isGenerating?: boolean;
1693
+ ref?: Ref<HTMLDivElement>;
1694
+ }
1695
+ declare function ReferenceEntry({ reference, isFocused, isHovered, routes, annotateMode, isGenerating, ref, }: ReferenceEntryProps): react_jsx_runtime.JSX.Element;
1696
+
1697
+ type JobProgress$2 = components['schemas']['JobProgress'];
1698
+
1699
+ type Motivation$2 = components['schemas']['Motivation'];
1700
+ type ReferencedBy = components['schemas']['GetReferencedByResponse']['referencedBy'][number];
1701
+ interface PendingAnnotation$2 {
1702
+ selector: Selector | Selector[];
1703
+ motivation: Motivation$2;
1704
+ }
1705
+ interface Props$1 {
1706
+ annotations?: Annotation[];
1707
+ isAssisting: boolean;
1708
+ progress: JobProgress$2 | null;
1709
+ annotateMode?: boolean;
1710
+ Link: React__default.ComponentType<LinkComponentProps>;
1711
+ routes: RouteBuilder;
1712
+ allEntityTypes: string[];
1713
+ generatingReferenceId?: string | null;
1714
+ referencedBy?: ReferencedBy[];
1715
+ referencedByLoading?: boolean;
1716
+ pendingAnnotation: PendingAnnotation$2 | null;
1717
+ scrollToAnnotationId?: string | null;
1718
+ onScrollCompleted?: () => void;
1719
+ hoveredAnnotationId?: string | null;
1720
+ /** User UI locale — stamped on the unresolved-reference body's `language` field. */
1721
+ locale?: string;
1722
+ /** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
1723
+ sourceLanguage?: string;
1724
+ }
1725
+ /**
1726
+ * Panel for managing reference annotations with entity type annotation
1727
+ *
1728
+ * @emits annotate:detect-request - Start reference annotation. Payload: { motivation: 'linking', options: { entityTypes: string[], includeDescriptiveReferences: boolean } }
1729
+ * @emits mark:create - Create new reference annotation. Payload: { motivation: 'linking', selector: Selector | Selector[], body: Body[] }
1730
+ * @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
1731
+ * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1732
+ */
1733
+ declare function ReferencesPanel({ annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): react_jsx_runtime.JSX.Element;
1734
+
1735
+ type Agent = components['schemas']['Agent'];
1736
+ interface Props {
1737
+ resourceId: string;
1738
+ documentEntityTypes: string[];
1739
+ documentLocale?: string | undefined;
1740
+ primaryMediaType?: string | undefined;
1741
+ primaryByteSize?: number | undefined;
1742
+ storageUri?: string | undefined;
1743
+ isArchived?: boolean;
1744
+ dateCreated?: string | undefined;
1745
+ dateModified?: string | undefined;
1746
+ wasAttributedTo?: Agent | Agent[] | undefined;
1747
+ wasDerivedFrom?: string | string[] | undefined;
1748
+ generator?: Agent | Agent[] | undefined;
1749
+ }
1750
+ /**
1751
+ * Panel for displaying resource metadata and management actions
1752
+ *
1753
+ * @emits yield:clone - Clone this resource
1754
+ * @emits mark:unarchive - Unarchive this resource
1755
+ * @emits mark:archive - Archive this resource
1756
+ */
1757
+ declare function ResourceInfoPanel({ resourceId, documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, storageUri, isArchived, dateCreated, dateModified, wasAttributedTo, wasDerivedFrom, generator, }: Props): react_jsx_runtime.JSX.Element;
1758
+
1759
+ interface StatisticsPanelProps {
1760
+ highlights: Annotation[];
1761
+ comments: Annotation[];
1762
+ assessments: Annotation[];
1763
+ references: Annotation[];
1764
+ tags: Annotation[];
1765
+ }
1766
+ declare function StatisticsPanel({ highlights, comments, assessments, references, tags }: StatisticsPanelProps): react_jsx_runtime.JSX.Element;
1767
+
1768
+ interface TagEntryProps {
1769
+ tag: Annotation;
1770
+ isFocused: boolean;
1771
+ isHovered?: boolean;
1772
+ ref?: Ref<HTMLDivElement>;
1773
+ }
1774
+ declare function TagEntry({ tag, isFocused, isHovered, ref, }: TagEntryProps): react_jsx_runtime.JSX.Element;
1775
+
1776
+ type Motivation$1 = components['schemas']['Motivation'];
1777
+ type JobProgress$1 = components['schemas']['JobProgress'];
1778
+ interface PendingAnnotation$1 {
1779
+ selector: Selector | Selector[];
1780
+ motivation: Motivation$1;
1781
+ }
1782
+ interface TaggingPanelProps {
1783
+ annotations: Annotation[];
1784
+ annotateMode?: boolean;
1785
+ isAssisting?: boolean;
1786
+ progress?: JobProgress$1 | null;
1787
+ pendingAnnotation: PendingAnnotation$1 | null;
1788
+ scrollToAnnotationId?: string | null;
1789
+ onScrollCompleted?: () => void;
1790
+ hoveredAnnotationId?: string | null;
1791
+ /** User UI locale — stamped on the tagging body's `language` field. */
1792
+ locale?: string;
1793
+ /** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
1794
+ sourceLanguage?: string;
1795
+ }
1796
+ /**
1797
+ * Panel for managing tag annotations with schema-based annotation
1798
+ *
1799
+ * @emits annotate:detect-request - Start tag annotation. Payload: { motivation: 'tagging', options: { schemaId: string, categories: string[] } }
1800
+ * @emits mark:cancel-pending - Cancel pending tag annotation. Payload: undefined
1801
+ * @emits mark:create - Create new tag annotation. Payload: { motivation: 'tagging', selector: Selector | Selector[], body: Body[] }
1802
+ * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1803
+ */
1804
+ declare function TaggingPanel({ annotations, annotateMode, isAssisting, progress, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: TaggingPanelProps): react_jsx_runtime.JSX.Element;
1805
+
1806
+ type JobProgress = components['schemas']['JobProgress'];
1807
+
1808
+ type Motivation = components['schemas']['Motivation'];
1809
+ type TabKey = 'statistics' | 'reference' | 'highlight' | 'assessment' | 'comment' | 'tag';
1810
+ interface PendingAnnotation {
1811
+ selector: Selector | Selector[];
1812
+ motivation: Motivation;
1813
+ }
1814
+ /**
1815
+ * Simplified UnifiedAnnotationsPanel using event-driven architecture
1816
+ *
1817
+ * Key simplifications:
1818
+ * - Single annotations array (grouped internally by motivation)
1819
+ * - Single focusedAnnotationId (motivation-agnostic)
1820
+ * - Hover state managed via event bus (no props needed)
1821
+ * - All operations managed via event bus (no callback props)
1822
+ */
1823
+ interface UnifiedAnnotationsPanelProps {
1824
+ annotations: Annotation[];
1825
+ annotators: Record<string, Annotator>;
1826
+ annotateMode?: boolean;
1827
+ assistingMotivation?: Motivation | null;
1828
+ progress?: JobProgress | null;
1829
+ pendingAnnotation: PendingAnnotation | null;
1830
+ allEntityTypes?: string[];
1831
+ generatingReferenceId?: string | null;
1832
+ referencedBy?: any[];
1833
+ referencedByLoading?: boolean;
1834
+ resourceId?: string;
1835
+ initialTab?: TabKey;
1836
+ initialTabGeneration?: number;
1837
+ scrollToAnnotationId?: string | null;
1838
+ onScrollCompleted?: () => void;
1839
+ hoveredAnnotationId?: string | null;
1840
+ locale?: string;
1841
+ /**
1842
+ * BCP-47 tag of the resource being analyzed (source-resource locale).
1843
+ * Independent from `locale` — a German user can analyze a French source
1844
+ * and get German bodies back. Fed into detection prompts.
1845
+ */
1846
+ sourceLanguage?: string;
1847
+ Link: React__default.ComponentType<LinkComponentProps>;
1848
+ routes: RouteBuilder;
1849
+ }
1850
+ declare function UnifiedAnnotationsPanel(props: UnifiedAnnotationsPanelProps): react_jsx_runtime.JSX.Element;
1851
+
1852
+ interface ImageViewerProps {
1853
+ imageUrl: string;
1854
+ mimeType: string;
1855
+ alt?: string;
1856
+ }
1857
+ declare function ImageViewer({ imageUrl, alt }: ImageViewerProps): react_jsx_runtime.JSX.Element;
1858
+
1859
+ type TranslateFn$3 = (key: string, params?: Record<string, any>) => string;
1860
+ interface FooterProps {
1861
+ Link: React__default.ComponentType<LinkComponentProps>;
1862
+ routes: RouteBuilder;
1863
+ t: TranslateFn$3;
1864
+ CookiePreferences?: React__default.ComponentType<{
1865
+ isOpen: boolean;
1866
+ onClose: () => void;
1867
+ }>;
1868
+ onOpenKeyboardHelp?: () => void;
1869
+ sourceCodeUrl?: string;
1870
+ /** Show About, Privacy Policy, Terms of Service, Cookie Preferences links. False for desktop apps. */
1871
+ showPolicyLinks?: boolean;
1872
+ }
1873
+ declare function Footer({ Link, routes, t, CookiePreferences, onOpenKeyboardHelp, sourceCodeUrl, showPolicyLinks, }: FooterProps): react_jsx_runtime.JSX.Element;
1874
+
1875
+ type TranslateFn$2 = (key: string, params?: Record<string, any>) => string;
1876
+ interface NavigationMenuProps {
1877
+ Link: React__default.ComponentType<LinkComponentProps>;
1878
+ routes: RouteBuilder;
1879
+ t: TranslateFn$2;
1880
+ isAdmin?: boolean;
1881
+ isModerator?: boolean;
1882
+ brandingLink?: string;
1883
+ onItemClick?: () => void;
1884
+ className?: string;
1885
+ currentPath?: string;
1886
+ }
1887
+ declare function NavigationMenu({ Link, routes, t, isAdmin, isModerator, onItemClick, className, currentPath }: NavigationMenuProps): react_jsx_runtime.JSX.Element;
1888
+
1889
+ /**
1890
+ * Props for ObservableLink component
1891
+ *
1892
+ * Accepts any props that a standard anchor element accepts,
1893
+ * plus optional navigation metadata for event emission.
1894
+ */
1895
+ interface ObservableLinkProps extends React__default.AnchorHTMLAttributes<HTMLAnchorElement> {
1896
+ /** The URL to navigate to */
1897
+ href: string;
1898
+ /** Optional label for the link (used in event metadata) */
1899
+ label?: string;
1900
+ /** Children to render inside the link */
1901
+ children: React__default.ReactNode;
1902
+ }
1903
+ /**
1904
+ * Link component that emits navigation events for observability
1905
+ *
1906
+ * Use this instead of Next.js <Link> when you want link clicks to be
1907
+ * observable through the NavigationEventBus. This is useful for:
1908
+ * - Analytics tracking
1909
+ * - State coordination before navigation
1910
+ * - Logging navigation flows
1911
+ *
1912
+ * The component emits 'nav:link-clicked' event before allowing
1913
+ * the browser to follow the link.
1914
+ *
1915
+ * @example
1916
+ * ```typescript
1917
+ * <ObservableLink
1918
+ * href="/know/discover"
1919
+ * label="Discover"
1920
+ * >
1921
+ * Discover Resources
1922
+ * </ObservableLink>
1923
+ * ```
1924
+ *
1925
+ * @example With Next.js Link integration
1926
+ * ```typescript
1927
+ * import Link from 'next/link';
1928
+ *
1929
+ * <Link href="/know/discover" legacyBehavior passHref>
1930
+ * <ObservableLink label="Discover">
1931
+ * Discover Resources
1932
+ * </ObservableLink>
1933
+ * </Link>
1934
+ * ```
1935
+ *
1936
+ * @emits nav:link-clicked - Link clicked by user. Payload: { href: string, label?: string }
1937
+ */
1938
+ declare function ObservableLink({ href, label, onClick, children, ...anchorProps }: ObservableLinkProps): react_jsx_runtime.JSX.Element;
1939
+
1940
+ interface SimpleNavigationItem$1 {
1941
+ name: string;
1942
+ href: string;
1943
+ icon: React__default.ComponentType<{
1944
+ className?: string;
1945
+ }>;
1946
+ description?: string;
1947
+ }
1948
+ interface SimpleNavigationProps$1 {
1949
+ title: string;
1950
+ items: SimpleNavigationItem$1[];
1951
+ currentPath: string;
1952
+ LinkComponent: React__default.ComponentType<any>;
1953
+ dropdownContent?: (onClose: () => void) => React__default.ReactNode;
1954
+ isCollapsed: boolean;
1955
+ icons: {
1956
+ chevronLeft: React__default.ComponentType<{
1957
+ className?: string;
1958
+ }>;
1959
+ bars: React__default.ComponentType<{
1960
+ className?: string;
1961
+ }>;
1962
+ };
1963
+ collapseSidebarLabel: string;
1964
+ expandSidebarLabel: string;
1965
+ }
1966
+ /**
1967
+ * Simple navigation component for Admin and Moderation modes.
1968
+ * Renders a section header with optional dropdown and static navigation tabs.
1969
+ *
1970
+ * @emits shell:sidebar-toggle - Toggle sidebar collapsed/expanded state. Payload: undefined
1971
+ */
1972
+ declare function SimpleNavigation({ title, items, currentPath, LinkComponent, dropdownContent, isCollapsed, icons, collapseSidebarLabel, expandSidebarLabel }: SimpleNavigationProps$1): react_jsx_runtime.JSX.Element;
1973
+
1974
+ /**
1975
+ * Props for the sortable resource tab component
1976
+ */
1977
+ interface SortableResourceTabProps {
1978
+ resource: OpenResource;
1979
+ isCollapsed: boolean;
1980
+ isActive: boolean;
1981
+ href: string;
1982
+ onClose: (id: string, e: React.MouseEvent) => void;
1983
+ onReorder?: (resourceId: string, direction: 'up' | 'down') => void;
1984
+ index?: number;
1985
+ totalCount?: number;
1986
+ LinkComponent: ComponentType<any>;
1987
+ dragHandleProps?: any;
1988
+ isDragging?: boolean;
1989
+ translations: {
1990
+ dragToReorder?: string;
1991
+ dragToReorderDoc?: string;
1992
+ closeResource?: string;
1993
+ moveUp?: string;
1994
+ moveDown?: string;
1995
+ };
1996
+ }
1997
+ /**
1998
+ * Props for the collapsible resource navigation component
1999
+ */
2000
+ interface CollapsibleResourceNavigationProps {
2001
+ fixedItems: Array<{
2002
+ name: string;
2003
+ href: string;
2004
+ icon: ComponentType<any>;
2005
+ description?: string;
2006
+ }>;
2007
+ resources: OpenResource[];
2008
+ isCollapsed: boolean;
2009
+ currentPath: string;
2010
+ LinkComponent: ComponentType<any>;
2011
+ onNavigate?: (path: string) => void;
2012
+ getResourceHref: (resourceId: string) => string;
2013
+ className?: string;
2014
+ translations: {
2015
+ title?: string;
2016
+ collapseSidebar?: string;
2017
+ expandSidebar?: string;
2018
+ dragToReorder?: string;
2019
+ dragToReorderDoc?: string;
2020
+ closeResource?: string;
2021
+ dragInstructions?: string;
2022
+ };
2023
+ icons: {
2024
+ chevronLeft: ComponentType<any>;
2025
+ bars: ComponentType<any>;
2026
+ close: ComponentType<any>;
2027
+ };
2028
+ navigationMenu?: ((onClose: () => void) => ReactNode) | undefined;
2029
+ }
2030
+
2031
+ /**
2032
+ * A comprehensive collapsible navigation component with fixed items and dynamic resource tabs.
2033
+ * Supports drag and drop for resource reordering when expanded.
2034
+ * Platform-agnostic design for use across different React environments.
2035
+ *
2036
+ * @emits tabs:reorder - Resource tab reordered. Payload: { oldIndex: number, newIndex: number }
2037
+ * @emits tabs:close - Resource tab closed. Payload: { resourceId: string }
2038
+ * @emits shell:sidebar-toggle - Toggle sidebar collapsed/expanded state. Payload: undefined
2039
+ */
2040
+ declare function CollapsibleResourceNavigation({ fixedItems, resources, isCollapsed, currentPath, LinkComponent, onNavigate, getResourceHref, className, translations, icons, navigationMenu }: CollapsibleResourceNavigationProps): react_jsx_runtime.JSX.Element;
2041
+
2042
+ /**
2043
+ * A sortable tab for an open resource in the navigation sidebar.
2044
+ * Supports drag and drop when expanded, and compact icon-only view when collapsed.
2045
+ */
2046
+ declare function SortableResourceTab({ resource, isCollapsed, isActive, href, onClose, onReorder, index, totalCount, LinkComponent, translations, isDragging }: SortableResourceTabProps): react_jsx_runtime.JSX.Element;
2047
+
2048
+ interface SimpleNavigationItem {
2049
+ name: string;
2050
+ href: string;
2051
+ icon: React.ComponentType<any>;
2052
+ description?: string;
2053
+ }
2054
+ interface SimpleNavigationProps {
2055
+ title: string;
2056
+ items: SimpleNavigationItem[];
2057
+ currentPath: string;
2058
+ LinkComponent: React.ComponentType<any>;
2059
+ dropdownContent?: ((onClose: () => void) => ReactNode) | undefined;
2060
+ }
2061
+
2062
+ interface GenerationConfig {
2063
+ title: string;
2064
+ storagePath: string;
2065
+ prompt?: string;
2066
+ language: string;
2067
+ temperature: number;
2068
+ maxTokens: number;
2069
+ context: GatheredContext;
2070
+ }
2071
+
2072
+ interface ReferenceWizardModalProps {
2073
+ isOpen: boolean;
2074
+ onClose: () => void;
2075
+ /** The annotation being resolved */
2076
+ annotationId: string | null;
2077
+ /** The resource containing the annotation */
2078
+ resourceId: string | null;
2079
+ /** Default title (selected text) */
2080
+ defaultTitle: string;
2081
+ /** Entity types from the annotation */
2082
+ entityTypes: string[];
2083
+ /** Current locale for generation defaults */
2084
+ locale: string;
2085
+ /** Gathered context state */
2086
+ context: GatheredContext | null;
2087
+ contextLoading: boolean;
2088
+ contextError: Error | null;
2089
+ /** Callbacks */
2090
+ onGenerateSubmit: (referenceId: string, config: GenerationConfig) => void;
2091
+ onLinkResource: (referenceId: string, targetResourceId: string) => void;
2092
+ onComposeNavigate: (context: GatheredContext, annotationId: string, resourceId: string, title: string, entityTypes: string[]) => void;
2093
+ /** Translation strings */
2094
+ translations: {
2095
+ gatherTitle: string;
2096
+ configureGenerationTitle: string;
2097
+ configureSearchTitle: string;
2098
+ searchResultsTitle: string;
2099
+ sourceContextLabel: string;
2100
+ connectionsLabel: string;
2101
+ citedByLabel: string;
2102
+ userHintLabel: string;
2103
+ userHintPlaceholder: string;
2104
+ loadingContext: string;
2105
+ failedContext: string;
2106
+ cancel: string;
2107
+ search: string;
2108
+ searching: string;
2109
+ generate: string;
2110
+ compose: string;
2111
+ resolutionStrategyLabel: string;
2112
+ back: string;
2113
+ link: string;
2114
+ score: string;
2115
+ noResults: string;
2116
+ resourceTitle: string;
2117
+ resourceTitlePlaceholder: string;
2118
+ additionalInstructions: string;
2119
+ additionalInstructionsPlaceholder: string;
2120
+ language: string;
2121
+ languageHelp: string;
2122
+ creativity: string;
2123
+ creativityFocused: string;
2124
+ creativityCreative: string;
2125
+ maxLength: string;
2126
+ maxLengthHelp: string;
2127
+ maxResults: string;
2128
+ semanticScoring: string;
2129
+ semanticScoringHelp: string;
2130
+ };
2131
+ }
2132
+ declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, entityTypes, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource, onComposeNavigate, translations: t, }: ReferenceWizardModalProps): react_jsx_runtime.JSX.Element;
2133
+
2134
+ interface SearchModalProps$1 {
2135
+ isOpen: boolean;
2136
+ onClose: () => void;
2137
+ onNavigate: (type: 'resource' | 'entity', id: string) => void;
2138
+ translations?: {
2139
+ placeholder?: string;
2140
+ searching?: string;
2141
+ noResults?: string;
2142
+ startTyping?: string;
2143
+ navigate?: string;
2144
+ select?: string;
2145
+ close?: string;
2146
+ enter?: string;
2147
+ esc?: string;
2148
+ };
2149
+ }
2150
+ declare function SearchModal({ isOpen, onClose, onNavigate, translations }: SearchModalProps$1): react_jsx_runtime.JSX.Element;
2151
+
2152
+ interface ResourceSearchModalProps$1 {
2153
+ isOpen: boolean;
2154
+ onClose: () => void;
2155
+ onSelect: (resourceId: string) => void;
2156
+ searchTerm?: string;
2157
+ translations?: {
2158
+ title?: string;
2159
+ placeholder?: string;
2160
+ searching?: string;
2161
+ noResults?: string;
2162
+ close?: string;
2163
+ };
2164
+ }
2165
+ declare function ResourceSearchModal({ isOpen, onClose, onSelect, searchTerm, translations }: ResourceSearchModalProps$1): react_jsx_runtime.JSX.Element;
2166
+
2167
+ /**
2168
+ * Base modal props that all modals share
2169
+ */
2170
+ interface BaseModalProps {
2171
+ /** Whether the modal is open */
2172
+ isOpen: boolean;
2173
+ /** Callback when the modal should close */
2174
+ onClose: () => void;
2175
+ /** Optional CSS class name */
2176
+ className?: string;
2177
+ }
2178
+ /**
2179
+ * Props for modals that navigate
2180
+ */
2181
+ interface NavigableModalProps {
2182
+ /** Navigation function */
2183
+ onNavigate: (path: string) => void;
2184
+ }
2185
+ /**
2186
+ * Search modal specific props
2187
+ */
2188
+ interface SearchModalProps extends BaseModalProps, NavigableModalProps {
2189
+ /** Optional translation support */
2190
+ translations?: {
2191
+ placeholder?: string;
2192
+ searching?: string;
2193
+ noResults?: string;
2194
+ startTyping?: string;
2195
+ navigate?: string;
2196
+ select?: string;
2197
+ close?: string;
2198
+ };
2199
+ }
2200
+ /**
2201
+ * Resource search modal props
2202
+ */
2203
+ interface ResourceSearchModalProps extends BaseModalProps {
2204
+ /** Callback when a resource is selected */
2205
+ onSelect: (resourceId: string) => void;
2206
+ /** Initial search term */
2207
+ searchTerm?: string;
2208
+ /** Optional translation support */
2209
+ translations?: {
2210
+ title?: string;
2211
+ placeholder?: string;
2212
+ searching?: string;
2213
+ noResults?: string;
2214
+ };
2215
+ }
2216
+
2217
+ /**
2218
+ * Skip links for keyboard navigation accessibility
2219
+ * These links are visually hidden but become visible when focused
2220
+ * They allow keyboard users to quickly jump to main content areas
2221
+ */
2222
+ declare function SkipLinks(): react_jsx_runtime.JSX.Element;
2223
+
2224
+ interface StatusDisplayProps {
2225
+ isFullyAuthenticated?: boolean;
2226
+ isAuthenticated?: boolean;
2227
+ hasValidBackendToken?: boolean;
2228
+ }
2229
+ declare function StatusDisplay({ isFullyAuthenticated, isAuthenticated, hasValidBackendToken }: StatusDisplayProps): react_jsx_runtime.JSX.Element;
2230
+
2231
+ declare function SessionTimer(): react_jsx_runtime.JSX.Element | null;
2232
+
2233
+ declare function SessionExpiryBanner(): react_jsx_runtime.JSX.Element | null;
2234
+
2235
+ declare function UserMenuSkeleton(): react_jsx_runtime.JSX.Element;
2236
+
2237
+ type TranslateFn$1 = (key: string) => string;
2238
+ interface SemiontBrandingProps {
2239
+ t: TranslateFn$1;
2240
+ className?: string;
2241
+ size?: 'sm' | 'md' | 'lg' | 'xl';
2242
+ showTagline?: boolean;
2243
+ animated?: boolean;
2244
+ compactTagline?: boolean;
2245
+ }
2246
+ declare function SemiontBranding({ t, className, size, showTagline, animated, compactTagline }: SemiontBrandingProps): react_jsx_runtime.JSX.Element;
2247
+
2248
+ /**
2249
+ * Translation function type for framework-agnostic components
2250
+ */
2251
+ type TranslateFn = (key: string, params?: Record<string, any>) => string;
2252
+
2253
+ interface UnifiedHeaderProps {
2254
+ Link: React__default.ComponentType<LinkComponentProps>;
2255
+ routes: RouteBuilder;
2256
+ t: TranslateFn;
2257
+ tHome: TranslateFn;
2258
+ showBranding?: boolean;
2259
+ showAuthLinks?: boolean;
2260
+ brandingLink?: string;
2261
+ variant?: 'standalone' | 'embedded' | 'floating';
2262
+ isAuthenticated?: boolean;
2263
+ isAdmin?: boolean;
2264
+ isModerator?: boolean;
2265
+ currentPath?: string;
2266
+ }
2267
+ declare function UnifiedHeader({ Link, routes, t, tHome, showBranding, brandingLink, variant, isAuthenticated, isAdmin, isModerator, currentPath }: UnifiedHeaderProps): react_jsx_runtime.JSX.Element;
2268
+
2269
+ interface NavigationMenuHelper {
2270
+ (onClose: () => void): React__default.ReactNode;
2271
+ }
2272
+ interface LeftSidebarProps {
2273
+ Link: React__default.ComponentType<LinkComponentProps>;
2274
+ routes: RouteBuilder;
2275
+ t: TranslateFn;
2276
+ tHome: TranslateFn;
2277
+ children: React__default.ReactNode | ((isCollapsed: boolean, toggleCollapsed: () => void, navigationMenu: NavigationMenuHelper) => React__default.ReactNode);
2278
+ brandingLink?: string;
2279
+ collapsible?: boolean;
2280
+ storageKey?: string;
2281
+ isAuthenticated?: boolean;
2282
+ isAdmin?: boolean;
2283
+ isModerator?: boolean;
2284
+ currentPath?: string;
2285
+ }
2286
+ declare function LeftSidebar({ Link, routes, t, tHome, children, brandingLink, collapsible, storageKey, isAdmin, isModerator, currentPath }: LeftSidebarProps): react_jsx_runtime.JSX.Element;
2287
+
2288
+ interface PageLayoutProps {
2289
+ Link: React__default.ComponentType<LinkComponentProps>;
2290
+ routes: RouteBuilder;
2291
+ t: TranslateFn;
2292
+ tNav: TranslateFn;
2293
+ tHome: TranslateFn;
2294
+ children: React__default.ReactNode;
2295
+ className?: string;
2296
+ showAuthLinks?: boolean;
2297
+ CookiePreferences?: React__default.ComponentType<{
2298
+ isOpen: boolean;
2299
+ onClose: () => void;
2300
+ }>;
2301
+ onOpenKeyboardHelp?: () => void;
2302
+ }
2303
+ declare function PageLayout({ Link, routes, t, tNav, tHome, children, className, showAuthLinks, CookiePreferences, onOpenKeyboardHelp }: PageLayoutProps): react_jsx_runtime.JSX.Element;
2304
+
2305
+ interface SemiontFaviconProps {
2306
+ size?: number;
2307
+ className?: string;
2308
+ variant?: 'gradient' | 'solid' | 'outline';
2309
+ background?: boolean;
2310
+ }
2311
+ declare function SemiontFavicon({ size, className, variant, background }: SemiontFaviconProps): react_jsx_runtime.JSX.Element;
2312
+
2313
+ declare const faviconPaths: {
2314
+ readonly ico: "/favicons/favicon.ico";
2315
+ readonly svg: "/favicons/favicon.svg";
2316
+ readonly appleTouchIcon: "/favicons/apple-touch-icon.png";
2317
+ readonly favicon32: "/favicons/favicon-32x32.png";
2318
+ readonly favicon16: "/favicons/favicon-16x16.png";
2319
+ readonly androidChrome192: "/favicons/android-chrome-192x192.png";
2320
+ readonly androidChrome512: "/favicons/android-chrome-512x512.png";
2321
+ readonly manifest: "/favicons/site.webmanifest";
2322
+ };
2323
+
2324
+ interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
2325
+ /**
2326
+ * Ref forwarded to the underlying button element
2327
+ */
2328
+ ref?: React__default.Ref<HTMLButtonElement>;
2329
+ /**
2330
+ * The visual variant of the button
2331
+ */
2332
+ variant?: 'primary' | 'secondary' | 'tertiary' | 'danger' | 'warning' | 'ghost';
2333
+ /**
2334
+ * The size of the button
2335
+ */
2336
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2337
+ /**
2338
+ * Whether the button should take full width of its container
2339
+ */
2340
+ fullWidth?: boolean;
2341
+ /**
2342
+ * Whether the button is in a loading state
2343
+ */
2344
+ loading?: boolean;
2345
+ /**
2346
+ * Icon to display before the button text
2347
+ */
2348
+ leftIcon?: React__default.ReactNode;
2349
+ /**
2350
+ * Icon to display after the button text
2351
+ */
2352
+ rightIcon?: React__default.ReactNode;
2353
+ /**
2354
+ * Whether the button should only show an icon (no text padding)
2355
+ */
2356
+ iconOnly?: boolean;
2357
+ /**
2358
+ * Whether to show the button in an active/pressed state
2359
+ */
2360
+ active?: boolean;
2361
+ }
2362
+ declare function Button({ variant, size, fullWidth, loading, leftIcon, rightIcon, iconOnly, active, className, disabled, children, type, ref, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
2363
+ /**
2364
+ * Button Group Component
2365
+ *
2366
+ * Groups multiple buttons together
2367
+ */
2368
+ interface ButtonGroupProps {
2369
+ children: React__default.ReactNode;
2370
+ /**
2371
+ * How to arrange the buttons
2372
+ */
2373
+ orientation?: 'horizontal' | 'vertical';
2374
+ /**
2375
+ * Whether buttons should be connected (no gap between them)
2376
+ */
2377
+ attached?: boolean;
2378
+ /**
2379
+ * Size of the gap between buttons (when not attached)
2380
+ */
2381
+ spacing?: 'xs' | 'sm' | 'md' | 'lg';
2382
+ className?: string;
2383
+ }
2384
+ declare const ButtonGroup: React__default.FC<ButtonGroupProps>;
2385
+
2386
+ /**
2387
+ * Semiont Design Tokens
2388
+ *
2389
+ * Core design tokens for the Semiont design system.
2390
+ * These tokens provide the foundation for all component styling
2391
+ * and can be consumed via JavaScript or CSS variables.
2392
+ */
2393
+ declare const tokens: {
2394
+ colors: {
2395
+ primary: {
2396
+ 50: string;
2397
+ 100: string;
2398
+ 200: string;
2399
+ 300: string;
2400
+ 400: string;
2401
+ 500: string;
2402
+ 600: string;
2403
+ 700: string;
2404
+ 800: string;
2405
+ 900: string;
2406
+ };
2407
+ secondary: {
2408
+ 50: string;
2409
+ 100: string;
2410
+ 200: string;
2411
+ 300: string;
2412
+ 400: string;
2413
+ 500: string;
2414
+ 600: string;
2415
+ 700: string;
2416
+ 800: string;
2417
+ 900: string;
2418
+ };
2419
+ semantic: {
2420
+ error: string;
2421
+ errorLight: string;
2422
+ errorDark: string;
2423
+ warning: string;
2424
+ warningLight: string;
2425
+ warningDark: string;
2426
+ success: string;
2427
+ successLight: string;
2428
+ successDark: string;
2429
+ info: string;
2430
+ infoLight: string;
2431
+ infoDark: string;
2432
+ };
2433
+ neutral: {
2434
+ 0: string;
2435
+ 50: string;
2436
+ 100: string;
2437
+ 200: string;
2438
+ 300: string;
2439
+ 400: string;
2440
+ 500: string;
2441
+ 600: string;
2442
+ 700: string;
2443
+ 800: string;
2444
+ 900: string;
2445
+ 950: string;
2446
+ 1000: string;
2447
+ };
2448
+ background: {
2449
+ primary: string;
2450
+ secondary: string;
2451
+ tertiary: string;
2452
+ inverse: string;
2453
+ };
2454
+ text: {
2455
+ primary: string;
2456
+ secondary: string;
2457
+ tertiary: string;
2458
+ disabled: string;
2459
+ inverse: string;
2460
+ };
2461
+ };
2462
+ spacing: {
2463
+ 0: string;
2464
+ xs: string;
2465
+ sm: string;
2466
+ md: string;
2467
+ lg: string;
2468
+ xl: string;
2469
+ '2xl': string;
2470
+ '3xl': string;
2471
+ '4xl': string;
2472
+ '5xl': string;
2473
+ };
2474
+ typography: {
2475
+ fontFamily: {
2476
+ sans: string;
2477
+ mono: string;
2478
+ };
2479
+ fontSize: {
2480
+ xs: string;
2481
+ sm: string;
2482
+ base: string;
2483
+ lg: string;
2484
+ xl: string;
2485
+ '2xl': string;
2486
+ '3xl': string;
2487
+ '4xl': string;
2488
+ '5xl': string;
2489
+ };
2490
+ fontWeight: {
2491
+ thin: number;
2492
+ light: number;
2493
+ normal: number;
2494
+ medium: number;
2495
+ semibold: number;
2496
+ bold: number;
2497
+ black: number;
2498
+ };
2499
+ lineHeight: {
2500
+ none: number;
2501
+ tight: number;
2502
+ snug: number;
2503
+ normal: number;
2504
+ relaxed: number;
2505
+ loose: number;
2506
+ };
2507
+ };
2508
+ borderRadius: {
2509
+ none: string;
2510
+ sm: string;
2511
+ base: string;
2512
+ md: string;
2513
+ lg: string;
2514
+ xl: string;
2515
+ '2xl': string;
2516
+ '3xl': string;
2517
+ full: string;
2518
+ };
2519
+ shadows: {
2520
+ none: string;
2521
+ xs: string;
2522
+ sm: string;
2523
+ base: string;
2524
+ md: string;
2525
+ lg: string;
2526
+ xl: string;
2527
+ inner: string;
2528
+ };
2529
+ transitions: {
2530
+ duration: {
2531
+ fast: string;
2532
+ base: string;
2533
+ slow: string;
2534
+ slower: string;
2535
+ };
2536
+ timing: {
2537
+ linear: string;
2538
+ ease: string;
2539
+ easeIn: string;
2540
+ easeOut: string;
2541
+ easeInOut: string;
2542
+ };
2543
+ };
2544
+ breakpoints: {
2545
+ sm: string;
2546
+ md: string;
2547
+ lg: string;
2548
+ xl: string;
2549
+ '2xl': string;
2550
+ };
2551
+ };
2552
+ /**
2553
+ * Generate CSS custom properties from design tokens
2554
+ */
2555
+ declare function generateCSSVariables(): string;
2556
+ declare const cssVariables: string;
2557
+ type ColorToken = keyof typeof tokens.colors;
2558
+ type SpacingToken = keyof typeof tokens.spacing;
2559
+ type TypographyToken = keyof typeof tokens.typography;
2560
+ type BorderRadiusToken = keyof typeof tokens.borderRadius;
2561
+ type ShadowToken = keyof typeof tokens.shadows;
2562
+ type TransitionToken = keyof typeof tokens.transitions;
2563
+
2564
+ /**
2565
+ * ComposeLoadingState Component
2566
+ *
2567
+ * Simple loading state display for the compose page.
2568
+ */
2569
+ interface ComposeLoadingStateProps {
2570
+ message: string;
2571
+ }
2572
+ declare function ComposeLoadingState({ message }: ComposeLoadingStateProps): react_jsx_runtime.JSX.Element;
2573
+
2574
+ /**
2575
+ * ResourceLoadingState - Loading state component for resource viewer
2576
+ *
2577
+ * Pure React component - no Next.js dependencies.
2578
+ */
2579
+ declare function ResourceLoadingState(): react_jsx_runtime.JSX.Element;
2580
+
2581
+ /**
2582
+ * ResourceErrorState - Error state component for resource viewer
2583
+ *
2584
+ * Pure React component - no Next.js dependencies.
2585
+ */
2586
+ interface ResourceErrorStateProps {
2587
+ error: unknown;
2588
+ onRetry: () => void;
2589
+ }
2590
+ declare function ResourceErrorState({ error, onRetry }: ResourceErrorStateProps): react_jsx_runtime.JSX.Element;
2591
+
2592
+ interface DevOpsFeature {
2593
+ title: string;
2594
+ description: string;
2595
+ icon: React__default.ComponentType<any>;
2596
+ available: string;
2597
+ }
2598
+ interface AdminDevOpsPageProps {
2599
+ suggestedFeatures: DevOpsFeature[];
2600
+ theme: 'light' | 'dark' | 'system';
2601
+ showLineNumbers: boolean;
2602
+ activePanel: string | null;
2603
+ translations: {
2604
+ title: string;
2605
+ subtitle: string;
2606
+ systemStatus: string;
2607
+ cliOperations: string;
2608
+ cliOperationsDescription: string;
2609
+ cliTitle: string;
2610
+ cliDescription: string;
2611
+ };
2612
+ StatusDisplay: React__default.ComponentType<any>;
2613
+ ToolbarPanels: React__default.ComponentType<any>;
2614
+ Toolbar: React__default.ComponentType<any>;
2615
+ }
2616
+ declare function AdminDevOpsPage({ suggestedFeatures, theme, showLineNumbers, activePanel, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): react_jsx_runtime.JSX.Element;
2617
+
2618
+ /**
2619
+ * ExportCard — Backup trigger
2620
+ *
2621
+ * Pure React component. All state and handlers passed as props.
2622
+ */
2623
+ interface ExportCardTranslations {
2624
+ title: string;
2625
+ description: string;
2626
+ exportButton: string;
2627
+ exporting: string;
2628
+ }
2629
+ interface ExportCardProps {
2630
+ onExport: () => void;
2631
+ isExporting: boolean;
2632
+ translations: ExportCardTranslations;
2633
+ }
2634
+ declare function ExportCard({ onExport, isExporting, translations: t }: ExportCardProps): react_jsx_runtime.JSX.Element;
2635
+
2636
+ /**
2637
+ * ShellStateUnit — app-shell state: which toolbar panel is open, tab-bar
2638
+ * coordination helpers, scroll-to-annotation signals. Lives on
2639
+ * `SemiontBrowser`'s app-scoped bus (not the per-session client bus)
2640
+ * because panel toggles and shell chrome must work regardless of
2641
+ * whether a KB session is active.
2642
+ *
2643
+ * Channels: `panel:toggle`, `panel:open`, `panel:close`.
2644
+ */
2645
+
2646
+ type ToolbarPanelType = 'history' | 'info' | 'annotations' | 'settings' | 'collaboration' | 'user' | 'jsonld' | 'knowledge-base';
2647
+ declare const COMMON_PANELS: readonly ToolbarPanelType[];
2648
+ declare const RESOURCE_PANELS: readonly ToolbarPanelType[];
2649
+ interface ShellStateUnit extends StateUnit {
2650
+ activePanel$: Observable<ToolbarPanelType | null>;
2651
+ scrollToAnnotationId$: Observable<string | null>;
2652
+ panelInitialTab$: Observable<{
2653
+ tab: string;
2654
+ generation: number;
2655
+ } | null>;
2656
+ openPanel(panel: string): void;
2657
+ closePanel(): void;
2658
+ togglePanel(panel: string): void;
2659
+ onScrollCompleted(): void;
2660
+ }
2661
+ interface ShellStateUnitOptions {
2662
+ initialPanel?: ToolbarPanelType | null;
2663
+ onPanelChange?: (panel: ToolbarPanelType | null) => void;
2664
+ }
2665
+ declare function createShellStateUnit(browser: SemiontBrowser, options?: ShellStateUnitOptions): ShellStateUnit;
2666
+
2667
+ interface ImportPreview {
2668
+ format: string;
2669
+ version: number;
2670
+ sourceUrl: string;
2671
+ stats: Record<string, number>;
2672
+ }
2673
+ interface ExchangeStateUnit extends StateUnit {
2674
+ browse: ShellStateUnit;
2675
+ selectedFile$: Observable<File | null>;
2676
+ preview$: Observable<ImportPreview | null>;
2677
+ importPhase$: Observable<string | null>;
2678
+ importMessage$: Observable<string | undefined>;
2679
+ importResult$: Observable<Record<string, unknown> | undefined>;
2680
+ isExporting$: Observable<boolean>;
2681
+ isImporting$: Observable<boolean>;
2682
+ selectFile(file: File): void;
2683
+ cancelImport(): void;
2684
+ doExport(): Promise<{
2685
+ blob: Blob;
2686
+ filename: string;
2687
+ }>;
2688
+ doImport(): Promise<void>;
2689
+ }
2690
+ declare function createExchangeStateUnit(browse: ShellStateUnit, exportFn: (params?: {
2691
+ includeArchived?: boolean;
2692
+ }) => Promise<BackendDownload>, importFn: (file: File) => Observable<ProgressEvent>): ExchangeStateUnit;
2693
+
2694
+ interface ImportCardTranslations {
2695
+ title: string;
2696
+ description: string;
2697
+ dropzoneLabel: string;
2698
+ dropzoneActive: string;
2699
+ detectedFormat: string;
2700
+ statsPreview: string;
2701
+ importButton: string;
2702
+ importing: string;
2703
+ importConfirmTitle: string;
2704
+ importConfirmMessage: string;
2705
+ confirmImport: string;
2706
+ cancelImport: string;
2707
+ }
2708
+ interface ImportCardProps {
2709
+ onFileSelected: (file: File) => void;
2710
+ onImport: () => void;
2711
+ onCancel: () => void;
2712
+ selectedFile: File | null;
2713
+ preview: ImportPreview | null;
2714
+ isImporting: boolean;
2715
+ translations: ImportCardTranslations;
2716
+ }
2717
+ declare function ImportCard({ onFileSelected, onImport, onCancel, selectedFile, preview, isImporting, translations: t, }: ImportCardProps): react_jsx_runtime.JSX.Element;
2718
+
2719
+ /**
2720
+ * ImportProgress — Shows SSE-driven progress during restore
2721
+ *
2722
+ * Pure React component. All state passed as props.
2723
+ */
2724
+ interface ImportProgressTranslations {
2725
+ phaseStarted: string;
2726
+ phaseEntityTypes: string;
2727
+ phaseResources: string;
2728
+ phaseAnnotations: string;
2729
+ phaseComplete: string;
2730
+ phaseError: string;
2731
+ hashChainValid: string;
2732
+ hashChainInvalid: string;
2733
+ streams: string;
2734
+ events: string;
2735
+ blobs: string;
2736
+ }
2737
+ interface ImportProgressProps {
2738
+ phase: string;
2739
+ message?: string;
2740
+ result?: Record<string, unknown>;
2741
+ translations: ImportProgressTranslations;
2742
+ }
2743
+ declare function ImportProgress({ phase, message, result, translations: t }: ImportProgressProps): react_jsx_runtime.JSX.Element;
2744
+
2745
+ interface AdminExchangePageTranslations {
2746
+ title: string;
2747
+ subtitle: string;
2748
+ export: ExportCardTranslations;
2749
+ import: ImportCardTranslations;
2750
+ progress: ImportProgressTranslations;
2751
+ }
2752
+ interface AdminExchangePageProps {
2753
+ onExport: () => void;
2754
+ isExporting: boolean;
2755
+ onFileSelected: (file: File) => void;
2756
+ onImport: () => void;
2757
+ onCancelImport: () => void;
2758
+ selectedFile: File | null;
2759
+ preview: ImportCardProps['preview'];
2760
+ isImporting: boolean;
2761
+ importPhase: string | null;
2762
+ importMessage?: string | undefined;
2763
+ importResult?: Record<string, unknown> | undefined;
2764
+ theme: 'light' | 'dark' | 'system';
2765
+ showLineNumbers: boolean;
2766
+ activePanel: string | null;
2767
+ translations: AdminExchangePageTranslations;
2768
+ ToolbarPanels: React__default.ComponentType<any>;
2769
+ Toolbar: React__default.ComponentType<any>;
2770
+ }
2771
+ declare function AdminExchangePage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminExchangePageProps): react_jsx_runtime.JSX.Element;
2772
+
2773
+ interface OAuthProvider {
2774
+ name: string;
2775
+ clientId?: string;
2776
+ }
2777
+ interface AdminSecurityPageProps {
2778
+ providers: OAuthProvider[];
2779
+ allowedDomains: string[];
2780
+ isLoading: boolean;
2781
+ theme: 'light' | 'dark' | 'system';
2782
+ showLineNumbers: boolean;
2783
+ activePanel: string | null;
2784
+ translations: {
2785
+ title: string;
2786
+ subtitle: string;
2787
+ oauthProviders: string;
2788
+ oauthProvidersDescription: string;
2789
+ clientId: string;
2790
+ configured: string;
2791
+ noProvidersConfigured: string;
2792
+ allowedDomains: string;
2793
+ allowedDomainsDescription: string;
2794
+ noDomainsConfigured: string;
2795
+ configManagementTitle: string;
2796
+ configManagementDescription: string;
2797
+ configLocalDev: string;
2798
+ configCloudDeploy: string;
2799
+ configCloudDeployCommand: string;
2800
+ configCloudDeployEnd: string;
2801
+ configAWS: string;
2802
+ };
2803
+ ToolbarPanels: React__default.ComponentType<any>;
2804
+ Toolbar: React__default.ComponentType<any>;
2805
+ }
2806
+ declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): react_jsx_runtime.JSX.Element;
2807
+
2808
+ interface LinkedDataPageTranslations {
2809
+ title: string;
2810
+ subtitle: string;
2811
+ export: ExportCardTranslations;
2812
+ import: ImportCardTranslations;
2813
+ progress: ImportProgressTranslations;
2814
+ }
2815
+ interface LinkedDataPageProps {
2816
+ onExport: () => void;
2817
+ isExporting: boolean;
2818
+ onFileSelected: (file: File) => void;
2819
+ onImport: () => void;
2820
+ onCancelImport: () => void;
2821
+ selectedFile: File | null;
2822
+ preview: ImportCardProps['preview'];
2823
+ isImporting: boolean;
2824
+ importPhase: string | null;
2825
+ importMessage?: string | undefined;
2826
+ importResult?: Record<string, unknown> | undefined;
2827
+ theme: 'light' | 'dark' | 'system';
2828
+ showLineNumbers: boolean;
2829
+ activePanel: string | null;
2830
+ translations: LinkedDataPageTranslations;
2831
+ ToolbarPanels: React__default.ComponentType<any>;
2832
+ Toolbar: React__default.ComponentType<any>;
2833
+ }
2834
+ declare function LinkedDataPage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: LinkedDataPageProps): react_jsx_runtime.JSX.Element;
2835
+
2836
+ interface AdminUser {
2837
+ id: string;
2838
+ email: string;
2839
+ name?: string | null;
2840
+ domain: string;
2841
+ isAdmin: boolean;
2842
+ isActive: boolean;
2843
+ lastLogin?: string | null;
2844
+ created: string;
2845
+ }
2846
+ interface AdminUserStats {
2847
+ totalUsers: number;
2848
+ activeUsers: number;
2849
+ adminUsers: number;
2850
+ recentSignups: string[];
2851
+ }
2852
+ interface AdminUsersPageProps {
2853
+ users: AdminUser[];
2854
+ userStats: AdminUserStats | null;
2855
+ isLoadingUsers: boolean;
2856
+ isLoadingStats: boolean;
2857
+ onUpdateUser: (id: string, data: {
2858
+ isAdmin?: boolean;
2859
+ isActive?: boolean;
2860
+ }) => void;
2861
+ onDeleteUser: (id: string) => void;
2862
+ onAddUser: () => void;
2863
+ onExportUsers: () => void;
2864
+ theme: 'light' | 'dark' | 'system';
2865
+ showLineNumbers: boolean;
2866
+ activePanel: string | null;
2867
+ translations: {
2868
+ title: string;
2869
+ subtitle: string;
2870
+ addUser: string;
2871
+ totalUsers: string;
2872
+ activeUsers: string;
2873
+ administrators: string;
2874
+ recentUsers: string;
2875
+ searchUsers: string;
2876
+ searchPlaceholder: string;
2877
+ role: string;
2878
+ allRoles: string;
2879
+ admin: string;
2880
+ user: string;
2881
+ status: string;
2882
+ allStatus: string;
2883
+ active: string;
2884
+ inactive: string;
2885
+ exportUsers: string;
2886
+ loadingUsers: string;
2887
+ userColumn: string;
2888
+ domainColumn: string;
2889
+ roleColumn: string;
2890
+ statusColumn: string;
2891
+ lastLoginColumn: string;
2892
+ joinedColumn: string;
2893
+ actionsColumn: string;
2894
+ noUsersFound: string;
2895
+ noUsersFoundDescription: string;
2896
+ noName: string;
2897
+ never: string;
2898
+ removeAdmin: string;
2899
+ makeAdmin: string;
2900
+ deactivateUser: string;
2901
+ activateUser: string;
2902
+ deleteUser: string;
2903
+ };
2904
+ ToolbarPanels: React__default.ComponentType<any>;
2905
+ Toolbar: React__default.ComponentType<any>;
2906
+ buttonStyles: {
2907
+ primary: {
2908
+ base: string;
2909
+ };
2910
+ secondary: {
2911
+ base: string;
2912
+ };
2913
+ };
2914
+ }
2915
+ declare function AdminUsersPage({ users, userStats, isLoadingUsers, isLoadingStats, onUpdateUser, onDeleteUser, onAddUser, onExportUsers, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, buttonStyles, }: AdminUsersPageProps): react_jsx_runtime.JSX.Element;
2916
+
2917
+ interface SignInFormProps {
2918
+ /**
2919
+ * Callback when user clicks Google sign-in.
2920
+ * Receives the backend URL (either the locked one or what the user typed).
2921
+ */
2922
+ onGoogleSignIn: (backendUrl: string) => Promise<void>;
2923
+ /**
2924
+ * Callback when user submits email/password credentials.
2925
+ * Receives the backend URL along with email and password.
2926
+ */
2927
+ onCredentialsSignIn?: ((backendUrl: string, email: string, password: string) => Promise<void>) | undefined;
2928
+ /**
2929
+ * Pre-filled backend URL. When provided the field is read-only (re-auth to known workspace).
2930
+ * When omitted the user enters the URL themselves (new connection).
2931
+ */
2932
+ backendUrl?: string;
2933
+ /**
2934
+ * Error message to display (if any)
2935
+ */
2936
+ error?: string | null;
2937
+ /**
2938
+ * Whether to show email/password auth form
2939
+ */
2940
+ showCredentialsAuth?: boolean;
2941
+ /**
2942
+ * Whether the auth providers are still loading
2943
+ */
2944
+ isLoading?: boolean;
2945
+ /**
2946
+ * Link component for routing - passed from parent
2947
+ */
2948
+ Link: React__default.ComponentType<any>;
2949
+ /**
2950
+ * Translation strings
2951
+ */
2952
+ translations: {
2953
+ pageTitle: string;
2954
+ welcomeBack: string;
2955
+ signInPrompt: string;
2956
+ continueWithGoogle: string;
2957
+ backendUrlLabel: string;
2958
+ backendUrlPlaceholder: string;
2959
+ emailLabel: string;
2960
+ emailPlaceholder: string;
2961
+ passwordLabel: string;
2962
+ passwordPlaceholder: string;
2963
+ signInWithCredentials: string;
2964
+ or: string;
2965
+ credentialsAuthEnabled: string;
2966
+ approvedDomainsOnly: string;
2967
+ backToHome: string;
2968
+ learnMore: string;
2969
+ signUpInstead: string;
2970
+ errorBackendUrlRequired: string;
2971
+ errorBackendUrlInvalid: string;
2972
+ errorBackendUrlUnreachable: string;
2973
+ errorEmailRequired: string;
2974
+ errorPasswordRequired: string;
2975
+ tagline: string;
2976
+ };
2977
+ }
2978
+ /**
2979
+ * SignInForm - Main sign-in / connect component.
2980
+ *
2981
+ * When backendUrl is provided (re-auth to known workspace) the URL field is locked.
2982
+ * When backendUrl is omitted (new connection) the user enters the URL themselves.
2983
+ */
2984
+ declare function SignInForm({ onGoogleSignIn, onCredentialsSignIn, backendUrl, error, showCredentialsAuth, isLoading, translations: t, }: SignInFormProps): react_jsx_runtime.JSX.Element;
2985
+
2986
+ interface SignUpFormProps {
2987
+ /**
2988
+ * Link component for routing - passed from parent
2989
+ */
2990
+ Link: React__default.ComponentType<any>;
2991
+ /**
2992
+ * Callback when user clicks the Google sign-up button
2993
+ */
2994
+ onSignUp: () => Promise<void>;
2995
+ /**
2996
+ * Translation strings for the form
2997
+ */
2998
+ translations: {
2999
+ pageTitle: string;
3000
+ signUpPrompt: string;
3001
+ signUpWithGoogle: string;
3002
+ creatingAccount: string;
3003
+ approvedDomainsInfo: string;
3004
+ termsAgreement: string;
3005
+ alreadyHaveAccount: string;
3006
+ tagline: string;
3007
+ backToHome: string;
3008
+ };
3009
+ }
3010
+ /**
3011
+ * SignUpForm component
3012
+ *
3013
+ * Renders the sign-up form with Google OAuth button.
3014
+ * Manages loading state internally.
3015
+ */
3016
+ declare function SignUpForm({ onSignUp, Link, translations: t }: SignUpFormProps): react_jsx_runtime.JSX.Element;
3017
+
3018
+ interface AuthErrorDisplayProps {
3019
+ /**
3020
+ * Link component for routing - passed from parent
3021
+ */
3022
+ Link: React__default.ComponentType<any>;
3023
+ /**
3024
+ * Error type from URL parameter
3025
+ */
3026
+ errorType: string | null;
3027
+ /**
3028
+ * Translation strings
3029
+ */
3030
+ translations: {
3031
+ pageTitle: string;
3032
+ tryAgain: string;
3033
+ errorConfiguration: string;
3034
+ errorAccessDenied: string;
3035
+ errorVerification: string;
3036
+ errorGeneric: string;
3037
+ };
3038
+ }
3039
+ /**
3040
+ * AuthErrorDisplay component
3041
+ *
3042
+ * Displays authentication error messages with a link to try again.
3043
+ */
3044
+ declare function AuthErrorDisplay({ errorType, Link, translations: t }: AuthErrorDisplayProps): react_jsx_runtime.JSX.Element;
3045
+
3046
+ interface WelcomePageProps {
3047
+ userName?: string;
3048
+ termsAcceptedAt?: string | null;
3049
+ isNewUser?: boolean;
3050
+ status: 'loading' | 'accepted' | 'form';
3051
+ isProcessing: boolean;
3052
+ onAccept: () => void;
3053
+ onDecline: () => void;
3054
+ translations: {
3055
+ loading: string;
3056
+ welcomeTitle: string;
3057
+ thanksForAccepting: string;
3058
+ welcomeUser: string;
3059
+ reviewTermsPrompt: string;
3060
+ termsSummaryTitle: string;
3061
+ termsSummaryIntro: string;
3062
+ acceptableUseTitle: string;
3063
+ acceptableUseResponsible: string;
3064
+ acceptableUseRespect: string;
3065
+ acceptableUseConduct: string;
3066
+ prohibitedContentTitle: string;
3067
+ prohibitedContentIntro: string;
3068
+ prohibitedIllegal: string;
3069
+ prohibitedAdult: string;
3070
+ prohibitedHate: string;
3071
+ prohibitedViolence: string;
3072
+ prohibitedMisinformation: string;
3073
+ prohibitedPrivacy: string;
3074
+ prohibitedCopyright: string;
3075
+ prohibitedMalware: string;
3076
+ prohibitedSpam: string;
3077
+ conductTitle: string;
3078
+ conductDescription: string;
3079
+ conductLink: string;
3080
+ conductPromotion: string;
3081
+ responsibilitiesTitle: string;
3082
+ responsibilitiesSecure: string;
3083
+ responsibilitiesReport: string;
3084
+ responsibilitiesAccurate: string;
3085
+ responsibilitiesComply: string;
3086
+ violationsWarning: string;
3087
+ readFullTerms: string;
3088
+ termsOfService: string;
3089
+ and: string;
3090
+ privacyPolicy: string;
3091
+ declineAndSignOut: string;
3092
+ acceptAndContinue: string;
3093
+ processing: string;
3094
+ legallyBound: string;
3095
+ };
3096
+ PageLayout: React__default.ComponentType<any>;
3097
+ Link: React__default.ComponentType<any>;
3098
+ }
3099
+ declare function WelcomePage({ userName, status, isProcessing, onAccept, onDecline, translations: t, PageLayout, Link, }: WelcomePageProps): react_jsx_runtime.JSX.Element;
3100
+
3101
+ interface EntityTagsPageProps {
3102
+ entityTypes: string[];
3103
+ isLoading: boolean;
3104
+ error: string;
3105
+ newTag: string;
3106
+ onNewTagChange: (value: string) => void;
3107
+ onAddTag: () => void;
3108
+ isAddingTag: boolean;
3109
+ theme: 'light' | 'dark' | 'system';
3110
+ showLineNumbers: boolean;
3111
+ activePanel: string | null;
3112
+ translations: {
3113
+ pageTitle: string;
3114
+ pageDescription: string;
3115
+ sectionTitle: string;
3116
+ sectionDescription: string;
3117
+ inputPlaceholder: string;
3118
+ addTag: string;
3119
+ adding: string;
3120
+ };
3121
+ ToolbarPanels: React__default.ComponentType<any>;
3122
+ Toolbar: React__default.ComponentType<any>;
3123
+ }
3124
+ declare function EntityTagsPage({ entityTypes, error, newTag, onNewTagChange, onAddTag, isAddingTag, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: EntityTagsPageProps): react_jsx_runtime.JSX.Element;
3125
+
3126
+ interface RecentDocumentsPageProps {
3127
+ hasDocuments: boolean;
3128
+ isLoading: boolean;
3129
+ theme: 'light' | 'dark' | 'system';
3130
+ showLineNumbers: boolean;
3131
+ activePanel: string | null;
3132
+ translations: {
3133
+ pageTitle: string;
3134
+ pageDescription: string;
3135
+ sectionTitle: string;
3136
+ sectionDescription: string;
3137
+ noDocuments: string;
3138
+ activityWillAppear: string;
3139
+ loading: string;
3140
+ };
3141
+ ToolbarPanels: React__default.ComponentType<any>;
3142
+ Toolbar: React__default.ComponentType<any>;
3143
+ }
3144
+ declare function RecentDocumentsPage({ isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: RecentDocumentsPageProps): react_jsx_runtime.JSX.Element;
3145
+
3146
+ interface TagSchemasPageProps {
3147
+ schemas: TagSchema[];
3148
+ isLoading: boolean;
3149
+ theme: 'light' | 'dark' | 'system';
3150
+ showLineNumbers: boolean;
3151
+ activePanel: string | null;
3152
+ translations: {
3153
+ pageTitle: string;
3154
+ pageDescription: string;
3155
+ categories: string;
3156
+ loading: string;
3157
+ };
3158
+ ToolbarPanels: React__default.ComponentType<any>;
3159
+ Toolbar: React__default.ComponentType<any>;
3160
+ }
3161
+ declare function TagSchemasPage({ schemas, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): react_jsx_runtime.JSX.Element;
3162
+
3163
+ type ComposeMode = 'new' | 'clone' | 'reference';
3164
+ interface ComposeParams {
3165
+ mode?: string | undefined;
3166
+ token?: string | undefined;
3167
+ annotationUri?: string | undefined;
3168
+ sourceDocumentId?: string | undefined;
3169
+ name?: string | undefined;
3170
+ entityTypes?: string | undefined;
3171
+ storedContext?: string | undefined;
3172
+ }
3173
+ interface CloneData {
3174
+ sourceResource: ResourceDescriptor;
3175
+ sourceContent: string;
3176
+ }
3177
+ interface ReferenceData {
3178
+ annotationUri: string;
3179
+ sourceDocumentId: string;
3180
+ name: string;
3181
+ entityTypes: string[];
3182
+ }
3183
+ interface SaveResourceParams$1 {
3184
+ mode: ComposeMode;
3185
+ name: string;
3186
+ storageUri: string;
3187
+ content?: string;
3188
+ file?: File;
3189
+ format?: string;
3190
+ charset?: string;
3191
+ entityTypes?: string[];
3192
+ language: string;
3193
+ archiveOriginal?: boolean;
3194
+ annotationUri?: string;
3195
+ sourceDocumentId?: string;
3196
+ }
3197
+ interface ComposePageStateUnit extends StateUnit {
3198
+ browse: ShellStateUnit;
3199
+ mode$: Observable<ComposeMode>;
3200
+ loading$: Observable<boolean>;
3201
+ cloneData$: Observable<CloneData | null>;
3202
+ referenceData$: Observable<ReferenceData | null>;
3203
+ gatheredContext$: Observable<GatheredContext | null>;
3204
+ entityTypes$: Observable<string[]>;
3205
+ /**
3206
+ * Live upload-progress for the in-flight `save(...)` call. Emits the
3207
+ * full `UploadProgress` lifecycle (started → finished) while a save is
3208
+ * underway; resets to `null` between saves and after completion. UI
3209
+ * components can subscribe to render an upload-in-progress indicator.
3210
+ */
3211
+ uploadProgress$: Observable<UploadProgress | null>;
3212
+ save(params: SaveResourceParams$1): Promise<string>;
3213
+ }
3214
+ declare function createComposePageStateUnit(client: SemiontClient, browse: ShellStateUnit, params: ComposeParams, auth?: AccessToken): ComposePageStateUnit;
3215
+
3216
+ interface ResourceComposePageProps {
3217
+ mode: 'new' | 'clone' | 'reference';
3218
+ cloneData?: CloneData | null;
3219
+ referenceData?: ReferenceData | null;
3220
+ gatheredContext?: GatheredContext | null;
3221
+ availableEntityTypes: string[];
3222
+ initialLocale: string;
3223
+ theme: 'light' | 'dark';
3224
+ showLineNumbers: boolean;
3225
+ hoverDelayMs: number;
3226
+ activePanel: string | null;
3227
+ onSaveResource: (params: SaveResourceParams) => Promise<void>;
3228
+ onCancel: () => void;
3229
+ /**
3230
+ * Live upload-progress for the in-flight save. Resolved by the route
3231
+ * shell from `composeVM.uploadProgress$`. `null` between saves and
3232
+ * after completion. When non-null, the form disables Save and the
3233
+ * inline `<UploadProgressBar />` below the action buttons renders.
3234
+ */
3235
+ uploadProgress?: UploadProgress | null;
3236
+ translations: {
3237
+ title: string;
3238
+ titleEditClone: string;
3239
+ titleCompleteReference: string;
3240
+ subtitleClone: string;
3241
+ subtitleReference: string;
3242
+ linkedNoticePrefix: string;
3243
+ resourceName: string;
3244
+ resourceNamePlaceholder: string;
3245
+ entityTypes: string;
3246
+ language: string;
3247
+ contentSource: string;
3248
+ uploadFile: string;
3249
+ uploadFileDescription: string;
3250
+ writeContent: string;
3251
+ writeContentDescription: string;
3252
+ dropFileOrClick: string;
3253
+ supportedFormats: string;
3254
+ mediaType: string;
3255
+ autoDetected: string;
3256
+ format: string;
3257
+ content: string;
3258
+ resourceContent: string;
3259
+ encoding: string;
3260
+ archiveOriginal: string;
3261
+ cancel: string;
3262
+ saving: string;
3263
+ creating: string;
3264
+ creatingAndLinking: string;
3265
+ saveClonedResource: string;
3266
+ createAndLinkResource: string;
3267
+ createResource: string;
3268
+ };
3269
+ ToolbarPanels: React__default.ComponentType<any>;
3270
+ Toolbar: React__default.ComponentType<any>;
3271
+ }
3272
+ interface SaveResourceParams {
3273
+ mode: 'new' | 'clone' | 'reference';
3274
+ name: string;
3275
+ storageUri: string;
3276
+ content?: string;
3277
+ file?: File;
3278
+ format?: string;
3279
+ charset?: string;
3280
+ entityTypes?: string[];
3281
+ language: string;
3282
+ archiveOriginal?: boolean;
3283
+ annotationUri?: string;
3284
+ sourceDocumentId?: string;
3285
+ }
3286
+ declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, showLineNumbers, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): react_jsx_runtime.JSX.Element;
3287
+
3288
+ /**
3289
+ * Inline upload-progress affordance for the compose page.
3290
+ *
3291
+ * Subscribes (via prop) to a `UploadProgress | null` value derived from
3292
+ * `composeVM.uploadProgress$`. Renders nothing when null; renders an
3293
+ * indeterminate state on `started`; renders a labeled bar with byte
3294
+ * counts on `progress`; renders a brief "Uploaded" success state on
3295
+ * `finished` (cleared by the state unit's `null` push on complete).
3296
+ *
3297
+ * Designed to live below the Save button in the compose form so the
3298
+ * visual association with the action that triggered the upload is
3299
+ * direct. Uses the existing `.semiont-progress` styles in
3300
+ * `packages/react-ui/src/styles/core/progress.css`.
3301
+ */
3302
+
3303
+ interface UploadProgressBarProps {
3304
+ progress: UploadProgress | null;
3305
+ /** Optional label for the "starting" / "uploaded" lines. Defaults to "Upload". */
3306
+ label?: string;
3307
+ }
3308
+ declare function UploadProgressBar({ progress, label }: UploadProgressBarProps): React__default.ReactElement | null;
3309
+
3310
+ interface ResourceDiscoveryPageProps {
3311
+ recentDocuments: ResourceDescriptor[];
3312
+ searchDocuments: ResourceDescriptor[];
3313
+ entityTypes: string[];
3314
+ isLoadingRecent: boolean;
3315
+ isSearching: boolean;
3316
+ searchQuery: string;
3317
+ onSearchQueryChange: (query: string) => void;
3318
+ theme: 'light' | 'dark';
3319
+ showLineNumbers: boolean;
3320
+ activePanel: string | null;
3321
+ onNavigateToResource: (resourceId: string) => void;
3322
+ onNavigateToCompose: () => void;
3323
+ translations: {
3324
+ title: string;
3325
+ subtitle: string;
3326
+ searchPlaceholder: string;
3327
+ searchButton: string;
3328
+ searching: string;
3329
+ filterByEntityType: string;
3330
+ all: string;
3331
+ recentResources: string;
3332
+ searchResults: (count: number) => string;
3333
+ documentsTaggedWith: (entityType: string) => string;
3334
+ noResultsFound: (query: string) => string;
3335
+ noResourcesAvailable: string;
3336
+ composeFirstResource: string;
3337
+ archived: string;
3338
+ created: string;
3339
+ loadingKnowledgeBase: string;
3340
+ };
3341
+ ToolbarPanels: React__default.ComponentType<any>;
3342
+ }
3343
+ declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, isSearching, searchQuery, onSearchQueryChange, theme, showLineNumbers, activePanel, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): react_jsx_runtime.JSX.Element;
3344
+
3345
+ interface ResourceCardProps {
3346
+ resource: ResourceDescriptor;
3347
+ onOpen: (resource: ResourceDescriptor) => void;
3348
+ tabIndex?: number;
3349
+ archivedLabel: string;
3350
+ createdLabel: string;
3351
+ }
3352
+ declare const ResourceCard: React__default.MemoExoticComponent<({ resource, onOpen, tabIndex, archivedLabel, createdLabel }: ResourceCardProps) => react_jsx_runtime.JSX.Element>;
3353
+
3354
+ type SemiontResource = ResourceDescriptor;
3355
+ interface ResourceViewerPageProps {
3356
+ /**
3357
+ * The resource to display
3358
+ */
3359
+ resource: SemiontResource;
3360
+ /**
3361
+ * Resource URI
3362
+ */
3363
+ rUri: ResourceId;
3364
+ /**
3365
+ * Current locale
3366
+ */
3367
+ locale: string;
3368
+ /**
3369
+ * Link component for routing
3370
+ */
3371
+ Link: React__default.ComponentType<any>;
3372
+ /**
3373
+ * Routes configuration
3374
+ */
3375
+ routes: any;
3376
+ /**
3377
+ * Component dependencies - passed from framework layer
3378
+ */
3379
+ ToolbarPanels: React__default.ComponentType<any>;
3380
+ /**
3381
+ * Callback to refetch document from parent
3382
+ */
3383
+ refetchDocument: () => Promise<unknown>;
3384
+ /**
3385
+ * Bus connection state for the active workspace. Six-valued state
3386
+ * machine from `actor.state$`; CollaborationPanel maps it to the
3387
+ * "Live" / "Disconnected" visual.
3388
+ */
3389
+ streamStatus: ConnectionState;
3390
+ /**
3391
+ * Name of the active knowledge base (for display in panels)
3392
+ */
3393
+ knowledgeBaseName?: string | undefined;
3394
+ }
3395
+ /**
3396
+ * ResourceViewerPage - Main component
3397
+ *
3398
+ * Uses hooks directly (NO containers, NO render props, NO ResourceViewerPageContent wrapper)
3399
+ *
3400
+ * @emits nav:push - Navigate to a resource or filtered view
3401
+ * @emits beckon:sparkle - Trigger sparkle animation on an annotation
3402
+ * @emits bind:update-body - Update annotation body content
3403
+ * @subscribes mark:archive - Archive the current resource
3404
+ * @subscribes mark:unarchive - Unarchive the current resource
3405
+ * @subscribes yield:clone - Clone the current resource
3406
+ * @subscribes beckon:sparkle - Trigger sparkle animation
3407
+ * @subscribes mark:added - Annotation was created
3408
+ * @subscribes mark:removed - Annotation was deleted
3409
+ * @subscribes mark:create-failed - Annotation creation failed
3410
+ * @subscribes mark:delete-failed - Annotation deletion failed
3411
+ * @subscribes mark:body-updated - Annotation body was updated
3412
+ * @subscribes annotate:body-update-failed - Annotation body update failed
3413
+ * @subscribes settings:theme-changed - UI theme changed
3414
+ * @subscribes settings:line-numbers-toggled - Line numbers display toggled
3415
+ * @subscribes detection:complete - Detection completed
3416
+ * @subscribes detection:failed - Detection failed
3417
+ * @subscribes generation:complete - Generation completed
3418
+ * @subscribes generation:failed - Generation failed
3419
+ * @subscribes browse:reference-navigate - Navigate to a referenced document
3420
+ * @subscribes browse:entity-type-clicked - Navigate filtered by entity type
3421
+ */
3422
+ declare function ResourceViewerPage({ resource, rUri, locale, Link, routes, ToolbarPanels, refetchDocument, streamStatus, knowledgeBaseName, }: ResourceViewerPageProps): react_jsx_runtime.JSX.Element;
3423
+
3424
+ interface HoverEmitterProps {
3425
+ onMouseEnter: () => void;
3426
+ onMouseLeave: () => void;
3427
+ }
3428
+ declare function useHoverEmitter(annotationId: AnnotationId, hoverDelayMs?: number): HoverEmitterProps;
3429
+
3430
+ interface SessionStateUnit extends StateUnit {
3431
+ isLoggingOut$: Observable<boolean>;
3432
+ logout(): Promise<void>;
3433
+ }
3434
+ declare function createSessionStateUnit(client: SemiontClient): SessionStateUnit;
3435
+
3436
+ interface AnnotationGroups {
3437
+ highlights: Annotation[];
3438
+ comments: Annotation[];
3439
+ assessments: Annotation[];
3440
+ references: Annotation[];
3441
+ tags: Annotation[];
3442
+ }
3443
+ type StoredEventResponse = components['schemas']['StoredEventResponse'];
3444
+ interface WizardState {
3445
+ open: boolean;
3446
+ annotationId: string | null;
3447
+ resourceId: string | null;
3448
+ defaultTitle: string;
3449
+ entityTypes: string[];
3450
+ }
3451
+ interface ResourceViewerPageStateUnit extends StateUnit {
3452
+ beckon: BeckonStateUnit;
3453
+ browse: ShellStateUnit;
3454
+ mark: MarkStateUnit;
3455
+ gather: GatherStateUnit;
3456
+ yield: YieldStateUnit;
3457
+ annotations$: Observable<Annotation[]>;
3458
+ annotationGroups$: Observable<AnnotationGroups>;
3459
+ entityTypes$: Observable<string[]>;
3460
+ events$: Observable<StoredEventResponse[]>;
3461
+ referencedBy$: Observable<ReferencedByEntry[]>;
3462
+ content$: Observable<string>;
3463
+ contentLoading$: Observable<boolean>;
3464
+ mediaToken$: Observable<string | null>;
3465
+ wizard$: Observable<WizardState>;
3466
+ closeWizard(): void;
3467
+ }
3468
+ declare function createResourceViewerPageStateUnit(client: SemiontClient, resourceId: ResourceId, locale: string, browse: ShellStateUnit, options?: {
3469
+ mediaType?: string;
3470
+ }): ResourceViewerPageStateUnit;
3471
+
3472
+ interface ResourceLoaderStateUnit extends StateUnit {
3473
+ resource$: Observable<ResourceDescriptor | undefined>;
3474
+ isLoading$: Observable<boolean>;
3475
+ invalidate(): void;
3476
+ }
3477
+ declare function createResourceLoaderStateUnit(client: SemiontClient, resourceId: ResourceId): ResourceLoaderStateUnit;
3478
+
3479
+ interface AdminUsersStateUnit extends StateUnit {
3480
+ browse: ShellStateUnit;
3481
+ users$: Observable<unknown[]>;
3482
+ stats$: Observable<unknown | null>;
3483
+ usersLoading$: Observable<boolean>;
3484
+ statsLoading$: Observable<boolean>;
3485
+ updateUser(id: string, data: {
3486
+ isAdmin?: boolean;
3487
+ isActive?: boolean;
3488
+ }): Promise<void>;
3489
+ }
3490
+ declare function createAdminUsersStateUnit(client: SemiontClient, browse: ShellStateUnit): AdminUsersStateUnit;
3491
+
3492
+ interface AdminSecurityStateUnit extends StateUnit {
3493
+ browse: ShellStateUnit;
3494
+ providers$: Observable<unknown[]>;
3495
+ allowedDomains$: Observable<string[]>;
3496
+ isLoading$: Observable<boolean>;
3497
+ }
3498
+ declare function createAdminSecurityStateUnit(client: SemiontClient, browse: ShellStateUnit): AdminSecurityStateUnit;
3499
+
3500
+ interface WelcomeStateUnit extends StateUnit {
3501
+ userData$: Observable<{
3502
+ termsAcceptedAt?: string;
3503
+ } | null>;
3504
+ isProcessing$: Observable<boolean>;
3505
+ acceptTerms(): Promise<void>;
3506
+ }
3507
+ declare function createWelcomeStateUnit(client: SemiontClient): WelcomeStateUnit;
3508
+
3509
+ interface DiscoverStateUnit extends StateUnit {
3510
+ browse: ShellStateUnit;
3511
+ search: SearchPipeline<ResourceDescriptor>;
3512
+ recentResources$: Observable<ResourceDescriptor[]>;
3513
+ entityTypes$: Observable<string[]>;
3514
+ isLoadingRecent$: Observable<boolean>;
3515
+ }
3516
+ declare function createDiscoverStateUnit(client: SemiontClient, browse: ShellStateUnit): DiscoverStateUnit;
3517
+
3518
+ interface EntityTagsStateUnit extends StateUnit {
3519
+ browse: ShellStateUnit;
3520
+ entityTypes$: Observable<string[]>;
3521
+ isLoading$: Observable<boolean>;
3522
+ newTag$: Observable<string>;
3523
+ error$: Observable<string>;
3524
+ isAdding$: Observable<boolean>;
3525
+ setNewTag(value: string): void;
3526
+ addTag(): Promise<void>;
3527
+ }
3528
+ declare function createEntityTagsStateUnit(client: SemiontClient, browse: ShellStateUnit): EntityTagsStateUnit;
3529
+
3530
+ /**
3531
+ * `ShellStateUnit` is app-scoped — it owns toolbar panel state and lives on
3532
+ * the `SemiontBrowser`'s own bus. Unlike session-scoped VMs, this hook
3533
+ * does not need to wait for an active KB session; `useSemiont()`
3534
+ * always returns the module-scoped `SemiontBrowser` singleton.
3535
+ */
3536
+ declare function useShellStateUnit(): ShellStateUnit;
3537
+
3538
+ /**
3539
+ * Subscribe to an RxJS Observable and return its current value as React state.
3540
+ *
3541
+ * - For a `BehaviorSubject` (or anything with a `getValue()` method), returns
3542
+ * its current value synchronously at the first render. This matters for
3543
+ * callers that build derived objects in a `useState(factory)` initializer
3544
+ * at first render — they need the subject's value present immediately, not
3545
+ * after a second render triggered by the useEffect subscribe.
3546
+ *
3547
+ * We duck-type on `.getValue` rather than using `instanceof BehaviorSubject`
3548
+ * because rxjs can be loaded through multiple module realms in tests (e.g.
3549
+ * a bundled CJS copy inside `@semiont/react-ui/dist` vs a fresh ESM import
3550
+ * in the test file), which makes `instanceof` unreliable.
3551
+ * - For non-BehaviorSubject Observables, starts at `undefined` and emits
3552
+ * asynchronously after the subscribe.
3553
+ * - Accepts `undefined`/`null` for cases where the observable's source isn't
3554
+ * ready yet (e.g. `semiont?.browse.events(rUri)` when the active session is
3555
+ * still loading). In that case the hook is a no-op and returns undefined.
3556
+ * - Unsubscribes automatically on unmount or when `obs$` changes.
3557
+ */
3558
+ declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
3559
+
3560
+ export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminExchangePage, AdminSecurityPage, AdminUsersPage, AnnotateReferencesProgressWidget, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistSection, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, EntityTagsPage, EntityTypeBadges, ErrorBoundary, ExportCard, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageURLSchema, ImageViewer, ImportCard, ImportProgress, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LinkedDataPage, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionExpiry, useShellStateUnit, useStateUnit, useTheme, useToast, useTranslations };
3561
+ export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, ExchangeStateUnit, ExportCardProps, ExportCardTranslations, HoverEmitterProps, ImportCardProps, ImportCardTranslations, ImportPreview, ImportProgressProps, ImportProgressTranslations, KeyboardShortcut, LinkComponentProps, LinkedDataPageProps, LinkedDataPageTranslations, Motivation$8 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, RecentDocumentsPageProps, ReferenceData, ReferenceWizardModalProps, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceLoaderStateUnit, ResourceSearchModalProps, ResourceViewerPageProps, ResourceViewerPageStateUnit, RouteBuilder, SaveResourceParams$1 as SaveResourceParams, SearchModalProps, SelectionMotivation, SelectorType, SemiontProviderProps, SemiontResource$2 as SemiontResource, SessionStateUnit, ShadowToken, ShapeType, ShellStateUnit, ShellStateUnitOptions, SignInFormProps, SignUpFormProps, SimpleNavigationItem, SimpleNavigationProps, SortableResourceTabProps, SpacingToken, TagSchemasPageProps, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseResourceContentResult, WelcomePageProps, WelcomeStateUnit, WizardState };