@semiont/react-ui 0.2.33-build.79 → 0.2.33-build.80

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 (213) hide show
  1. package/dist/EventBusContext-7GvDyO0d.d.mts +414 -0
  2. package/dist/{PdfAnnotationCanvas.client-ADC4FFSE.mjs → PdfAnnotationCanvas.client-RAJRPQLU.mjs} +42 -27
  3. package/dist/PdfAnnotationCanvas.client-RAJRPQLU.mjs.map +1 -0
  4. package/dist/{ar-EMHEHPCJ.mjs → ar-4ZEORRW2.mjs} +7 -4
  5. package/dist/ar-4ZEORRW2.mjs.map +1 -0
  6. package/dist/{bn-OVCI4F6X.mjs → bn-SEDE5BQJ.mjs} +7 -4
  7. package/dist/bn-SEDE5BQJ.mjs.map +1 -0
  8. package/dist/{chunk-LIHZTECW.mjs → chunk-D7NBW4RV.mjs} +7 -4
  9. package/dist/chunk-D7NBW4RV.mjs.map +1 -0
  10. package/dist/{chunk-JZIO2A3B.mjs → chunk-ZR4ZV2LY.mjs} +206 -146
  11. package/dist/chunk-ZR4ZV2LY.mjs.map +1 -0
  12. package/dist/{cs-FAN66Q2F.mjs → cs-7W4WF5WD.mjs} +7 -4
  13. package/dist/cs-7W4WF5WD.mjs.map +1 -0
  14. package/dist/{da-YBBIHI2O.mjs → da-75XGBCBK.mjs} +7 -4
  15. package/dist/da-75XGBCBK.mjs.map +1 -0
  16. package/dist/{de-MAYU33LB.mjs → de-ODJVFLHM.mjs} +7 -4
  17. package/dist/de-ODJVFLHM.mjs.map +1 -0
  18. package/dist/{el-MKGSWN4O.mjs → el-C4PM4WB3.mjs} +7 -4
  19. package/dist/el-C4PM4WB3.mjs.map +1 -0
  20. package/dist/{en-DDLIXJCU.mjs → en-KJCJQ4OO.mjs} +2 -2
  21. package/dist/{es-52LHUWJD.mjs → es-WD33R7QL.mjs} +7 -4
  22. package/dist/es-WD33R7QL.mjs.map +1 -0
  23. package/dist/{fa-FJICRANB.mjs → fa-2BP6V56P.mjs} +7 -4
  24. package/dist/fa-2BP6V56P.mjs.map +1 -0
  25. package/dist/{fi-O455XFCR.mjs → fi-USRRW24J.mjs} +7 -4
  26. package/dist/fi-USRRW24J.mjs.map +1 -0
  27. package/dist/{fr-TXIXHOOE.mjs → fr-EC5S6WVF.mjs} +7 -4
  28. package/dist/fr-EC5S6WVF.mjs.map +1 -0
  29. package/dist/{he-JBSOX5IN.mjs → he-7TBVIKAA.mjs} +7 -4
  30. package/dist/he-7TBVIKAA.mjs.map +1 -0
  31. package/dist/{hi-KGHI3XVT.mjs → hi-FO4VIZLA.mjs} +7 -4
  32. package/dist/hi-FO4VIZLA.mjs.map +1 -0
  33. package/dist/{id-5OCPPZLO.mjs → id-7U7GGVWY.mjs} +7 -4
  34. package/dist/id-7U7GGVWY.mjs.map +1 -0
  35. package/dist/index.css +123 -85
  36. package/dist/index.css.map +1 -1
  37. package/dist/index.d.mts +645 -471
  38. package/dist/index.mjs +3461 -3025
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/{it-PNBBZSM2.mjs → it-Y4OPL6I2.mjs} +7 -4
  41. package/dist/it-Y4OPL6I2.mjs.map +1 -0
  42. package/dist/{ja-LDD7R3TJ.mjs → ja-PK7SQL55.mjs} +7 -4
  43. package/dist/ja-PK7SQL55.mjs.map +1 -0
  44. package/dist/{ko-F47ZDEY3.mjs → ko-L25PXMYD.mjs} +7 -4
  45. package/dist/ko-L25PXMYD.mjs.map +1 -0
  46. package/dist/{ms-Z7LMXJWL.mjs → ms-STH777QM.mjs} +7 -4
  47. package/dist/ms-STH777QM.mjs.map +1 -0
  48. package/dist/{nl-6SJFBPJ3.mjs → nl-Y7LECDDR.mjs} +7 -4
  49. package/dist/nl-Y7LECDDR.mjs.map +1 -0
  50. package/dist/{no-YXPBPSGF.mjs → no-KEKCEWU6.mjs} +7 -4
  51. package/dist/no-KEKCEWU6.mjs.map +1 -0
  52. package/dist/{pl-P4AZ2QME.mjs → pl-7A7OC75O.mjs} +7 -4
  53. package/dist/pl-7A7OC75O.mjs.map +1 -0
  54. package/dist/{pt-LHWUS6U6.mjs → pt-35HTM7RA.mjs} +7 -4
  55. package/dist/pt-35HTM7RA.mjs.map +1 -0
  56. package/dist/{ro-EA5J2ZON.mjs → ro-VAWL5KQA.mjs} +7 -4
  57. package/dist/ro-VAWL5KQA.mjs.map +1 -0
  58. package/dist/{sv-DATBS3UQ.mjs → sv-7ZK5EQEB.mjs} +7 -4
  59. package/dist/sv-7ZK5EQEB.mjs.map +1 -0
  60. package/dist/test-utils.d.mts +18 -8
  61. package/dist/test-utils.mjs +36 -14
  62. package/dist/test-utils.mjs.map +1 -1
  63. package/dist/{th-WTFJRWPT.mjs → th-UDWZ4X34.mjs} +7 -4
  64. package/dist/th-UDWZ4X34.mjs.map +1 -0
  65. package/dist/{tr-IKO3RXOX.mjs → tr-4WMPK3UX.mjs} +7 -4
  66. package/dist/tr-4WMPK3UX.mjs.map +1 -0
  67. package/dist/{uk-CF6CTTRK.mjs → uk-SSLASQYJ.mjs} +7 -4
  68. package/dist/uk-SSLASQYJ.mjs.map +1 -0
  69. package/dist/{vi-AJLTXPZQ.mjs → vi-IF42Z5PU.mjs} +7 -4
  70. package/dist/vi-IF42Z5PU.mjs.map +1 -0
  71. package/dist/{zh-U3ORHHYH.mjs → zh-HRQTNTAI.mjs} +7 -4
  72. package/dist/zh-HRQTNTAI.mjs.map +1 -0
  73. package/package.json +3 -1
  74. package/src/components/CodeMirrorRenderer.tsx +66 -93
  75. package/src/components/DetectionProgressWidget.tsx +16 -5
  76. package/src/components/LiveRegion.tsx +18 -18
  77. package/src/components/ResizeHandle.tsx +10 -4
  78. package/src/components/SessionTimer.tsx +2 -2
  79. package/src/components/Toolbar.tsx +18 -9
  80. package/src/components/__tests__/SessionTimer.test.tsx +9 -9
  81. package/src/components/annotation/AnnotateToolbar.tsx +17 -15
  82. package/src/components/annotation/__tests__/AnnotateToolbar.test.tsx +165 -63
  83. package/src/components/annotation/annotation-entries.css +10 -0
  84. package/src/components/annotation-popups/JsonLdView.tsx +8 -2
  85. package/src/components/image-annotation/AnnotationOverlay.tsx +42 -22
  86. package/src/components/image-annotation/SvgDrawingCanvas.tsx +27 -30
  87. package/src/components/layout/__tests__/LeftSidebar.test.tsx +12 -33
  88. package/src/components/layout/__tests__/PageLayout.test.tsx +37 -32
  89. package/src/components/layout/__tests__/UnifiedHeader.test.tsx +21 -40
  90. package/src/components/modals/ResourceSearchModal.tsx +2 -2
  91. package/src/components/modals/SearchModal.tsx +1 -1
  92. package/src/components/navigation/CollapsibleResourceNavigation.tsx +14 -9
  93. package/src/components/navigation/NavigationTabs.css +36 -24
  94. package/src/components/navigation/ObservableLink.tsx +91 -0
  95. package/src/components/navigation/SimpleNavigation.tsx +20 -16
  96. package/src/components/navigation/SortableResourceTab.tsx +11 -5
  97. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +51 -26
  98. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +28 -22
  99. package/src/components/resource/AnnotateView.tsx +64 -134
  100. package/src/components/resource/BrowseView.tsx +86 -166
  101. package/src/components/resource/HistoryEvent.tsx +13 -7
  102. package/src/components/resource/ResourceViewer.tsx +122 -264
  103. package/src/components/resource/__tests__/BrowseView.test.tsx +631 -0
  104. package/src/components/resource/__tests__/ResourceViewer.mode-switch.test.tsx +231 -0
  105. package/src/components/resource/panels/AssessmentEntry.tsx +25 -33
  106. package/src/components/resource/panels/AssessmentPanel.tsx +106 -28
  107. package/src/components/resource/panels/CommentEntry.tsx +38 -32
  108. package/src/components/resource/panels/CommentsPanel.tsx +121 -28
  109. package/src/components/resource/panels/DetectSection.css +36 -1
  110. package/src/components/resource/panels/DetectSection.tsx +38 -10
  111. package/src/components/resource/panels/HighlightEntry.tsx +25 -33
  112. package/src/components/resource/panels/HighlightPanel.tsx +100 -25
  113. package/src/components/resource/panels/ReferenceEntry.tsx +61 -75
  114. package/src/components/resource/panels/ReferencesPanel.tsx +134 -42
  115. package/src/components/resource/panels/ResourceInfoPanel.tsx +47 -48
  116. package/src/components/resource/panels/TagEntry.tsx +25 -33
  117. package/src/components/resource/panels/TaggingPanel.tsx +119 -30
  118. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +30 -92
  119. package/src/components/resource/panels/__tests__/AssessmentPanel.test.tsx +129 -110
  120. package/src/components/resource/panels/__tests__/CommentEntry.test.tsx +86 -78
  121. package/src/components/resource/panels/__tests__/CommentsPanel.test.tsx +144 -149
  122. package/src/components/resource/panels/__tests__/DetectSection.test.tsx +480 -0
  123. package/src/components/resource/panels/__tests__/HighlightPanel.detectionProgress.test.tsx +362 -0
  124. package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +226 -111
  125. package/src/components/resource/panels/__tests__/ResourceInfoPanel.test.tsx +117 -61
  126. package/src/components/resource/panels/__tests__/TaggingPanel.test.tsx +128 -106
  127. package/src/components/settings/SettingsPanel.tsx +15 -12
  128. package/src/features/admin-devops/__tests__/AdminDevOpsPage.test.tsx +1 -46
  129. package/src/features/admin-devops/components/AdminDevOpsPage.tsx +0 -9
  130. package/src/features/admin-security/__tests__/AdminSecurityPage.test.tsx +0 -3
  131. package/src/features/admin-security/components/AdminSecurityPage.tsx +0 -9
  132. package/src/features/admin-users/__tests__/AdminUsersPage.test.tsx +0 -3
  133. package/src/features/admin-users/components/AdminUsersPage.tsx +0 -9
  134. package/src/features/moderate-entity-tags/__tests__/EntityTagsPage.test.tsx +0 -3
  135. package/src/features/moderate-entity-tags/components/EntityTagsPage.tsx +1 -9
  136. package/src/features/moderate-recent/__tests__/RecentDocumentsPage.test.tsx +0 -32
  137. package/src/features/moderate-recent/components/RecentDocumentsPage.tsx +1 -9
  138. package/src/features/moderate-tag-schemas/__tests__/TagSchemasPage.test.tsx +0 -32
  139. package/src/features/moderate-tag-schemas/components/TagSchemasPage.tsx +1 -9
  140. package/src/features/resource-compose/__tests__/ResourceComposePage.test.tsx +51 -54
  141. package/src/features/resource-compose/components/ResourceComposePage.tsx +3 -13
  142. package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +39 -45
  143. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +9 -13
  144. package/src/features/resource-viewer/__tests__/AnnotationDeletionIntegration.test.tsx +231 -0
  145. package/src/features/resource-viewer/__tests__/DetectionFlowBug.test.tsx +234 -0
  146. package/src/features/resource-viewer/__tests__/DetectionFlowIntegration.test.tsx +388 -0
  147. package/src/features/resource-viewer/__tests__/DetectionProgressDismissal.test.tsx +318 -0
  148. package/src/features/resource-viewer/__tests__/GenerationFlowIntegration.test.tsx +504 -0
  149. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +135 -88
  150. package/src/features/resource-viewer/__tests__/detection-progress-flow.test.tsx +322 -0
  151. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +308 -528
  152. package/translations/ar.json +6 -3
  153. package/translations/bn.json +6 -3
  154. package/translations/cs.json +6 -3
  155. package/translations/da.json +6 -3
  156. package/translations/de.json +6 -3
  157. package/translations/el.json +6 -3
  158. package/translations/en.json +6 -3
  159. package/translations/es.json +6 -3
  160. package/translations/fa.json +6 -3
  161. package/translations/fi.json +6 -3
  162. package/translations/fr.json +6 -3
  163. package/translations/he.json +6 -3
  164. package/translations/hi.json +6 -3
  165. package/translations/id.json +6 -3
  166. package/translations/it.json +6 -3
  167. package/translations/ja.json +6 -3
  168. package/translations/ko.json +6 -3
  169. package/translations/ms.json +6 -3
  170. package/translations/nl.json +6 -3
  171. package/translations/no.json +6 -3
  172. package/translations/pl.json +6 -3
  173. package/translations/pt.json +6 -3
  174. package/translations/ro.json +6 -3
  175. package/translations/sv.json +6 -3
  176. package/translations/th.json +6 -3
  177. package/translations/tr.json +6 -3
  178. package/translations/uk.json +6 -3
  179. package/translations/vi.json +6 -3
  180. package/translations/zh.json +6 -3
  181. package/dist/PdfAnnotationCanvas.client-ADC4FFSE.mjs.map +0 -1
  182. package/dist/TranslationManager-Co_5fSxl.d.mts +0 -118
  183. package/dist/ar-EMHEHPCJ.mjs.map +0 -1
  184. package/dist/bn-OVCI4F6X.mjs.map +0 -1
  185. package/dist/chunk-JZIO2A3B.mjs.map +0 -1
  186. package/dist/chunk-LIHZTECW.mjs.map +0 -1
  187. package/dist/cs-FAN66Q2F.mjs.map +0 -1
  188. package/dist/da-YBBIHI2O.mjs.map +0 -1
  189. package/dist/de-MAYU33LB.mjs.map +0 -1
  190. package/dist/el-MKGSWN4O.mjs.map +0 -1
  191. package/dist/es-52LHUWJD.mjs.map +0 -1
  192. package/dist/fa-FJICRANB.mjs.map +0 -1
  193. package/dist/fi-O455XFCR.mjs.map +0 -1
  194. package/dist/fr-TXIXHOOE.mjs.map +0 -1
  195. package/dist/he-JBSOX5IN.mjs.map +0 -1
  196. package/dist/hi-KGHI3XVT.mjs.map +0 -1
  197. package/dist/id-5OCPPZLO.mjs.map +0 -1
  198. package/dist/it-PNBBZSM2.mjs.map +0 -1
  199. package/dist/ja-LDD7R3TJ.mjs.map +0 -1
  200. package/dist/ko-F47ZDEY3.mjs.map +0 -1
  201. package/dist/ms-Z7LMXJWL.mjs.map +0 -1
  202. package/dist/nl-6SJFBPJ3.mjs.map +0 -1
  203. package/dist/no-YXPBPSGF.mjs.map +0 -1
  204. package/dist/pl-P4AZ2QME.mjs.map +0 -1
  205. package/dist/pt-LHWUS6U6.mjs.map +0 -1
  206. package/dist/ro-EA5J2ZON.mjs.map +0 -1
  207. package/dist/sv-DATBS3UQ.mjs.map +0 -1
  208. package/dist/th-WTFJRWPT.mjs.map +0 -1
  209. package/dist/tr-IKO3RXOX.mjs.map +0 -1
  210. package/dist/uk-CF6CTTRK.mjs.map +0 -1
  211. package/dist/vi-AJLTXPZQ.mjs.map +0 -1
  212. package/dist/zh-U3ORHHYH.mjs.map +0 -1
  213. /package/dist/{en-DDLIXJCU.mjs.map → en-KJCJQ4OO.mjs.map} +0 -0
package/dist/index.d.mts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as _semiont_api_client from '@semiont/api-client';
2
- import { components, ResourceUri, Selector, SemiontApiClient, AnnotationUri, ResourceAnnotationUri, ValidationResult, DetectionProgress as DetectionProgress$1, GenerationProgress as GenerationProgress$1, GenerationContext, paths } from '@semiont/api-client';
2
+ import { components, ResourceUri, Selector, DetectionProgress as DetectionProgress$1, GenerationProgress as GenerationProgress$1, SemiontApiClient, AnnotationUri, ResourceAnnotationUri, ValidationResult, paths, Motivation as Motivation$9, GenerationContext } from '@semiont/api-client';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as React$1 from 'react';
5
5
  import React__default, { ComponentType, ReactNode, MutableRefObject, KeyboardEvent as KeyboardEvent$1, Component, ErrorInfo } from 'react';
6
- import { A as ApiClientManager, O as OpenResourcesManager, S as SessionManager, T as TranslationManager } from './TranslationManager-Co_5fSxl.mjs';
7
- export { a as OpenResourceFromManager, b as SessionState } from './TranslationManager-Co_5fSxl.mjs';
6
+ import { E as EventBus, a as EventMap, O as OpenResourcesManager, S as SessionManager, T as TranslationManager } from './EventBusContext-7GvDyO0d.mjs';
7
+ export { e as EventBusProvider, d as EventBusProviderProps, b as OpenResourceFromManager, c as SessionState, r as resetEventBusForTesting, u as useEventBus } from './EventBusContext-7GvDyO0d.mjs';
8
8
  import * as _tanstack_react_query from '@tanstack/react-query';
9
9
  import { UseQueryOptions } from '@tanstack/react-query';
10
10
  import * as _codemirror_state from '@codemirror/state';
@@ -16,19 +16,19 @@ import { VFile } from 'vfile';
16
16
  import { TagSchema } from '@semiont/ontology';
17
17
  export { TAG_SCHEMAS, TagCategory, TagSchema, getAllTagSchemas, getSchemaCategory as getTagCategory, getTagSchema, getTagSchemasByDomain, isValidCategory } from '@semiont/ontology';
18
18
  import { ResourceEvent, StoredEvent } from '@semiont/core';
19
- import mitt from 'mitt';
19
+ import { Emitter } from 'mitt';
20
20
 
21
- type Annotation$p = components['schemas']['Annotation'];
21
+ type Annotation$m = components['schemas']['Annotation'];
22
22
  /**
23
23
  * Collection of all annotation types for a resource.
24
24
  * Replaces separate highlights, references, assessments, comments, tags props.
25
25
  */
26
26
  interface AnnotationsCollection {
27
- highlights: Annotation$p[];
28
- references: Annotation$p[];
29
- assessments: Annotation$p[];
30
- comments: Annotation$p[];
31
- tags: Annotation$p[];
27
+ highlights: Annotation$m[];
28
+ references: Annotation$m[];
29
+ assessments: Annotation$m[];
30
+ comments: Annotation$m[];
31
+ tags: Annotation$m[];
32
32
  }
33
33
  /**
34
34
  * Event handlers for annotation interactions.
@@ -36,7 +36,7 @@ interface AnnotationsCollection {
36
36
  */
37
37
  interface AnnotationHandlers {
38
38
  /** Unified click handler - routes based on annotation type and current mode */
39
- onClick?: (annotation: Annotation$p, event?: React.MouseEvent) => void;
39
+ onClick?: (annotation: Annotation$m, event?: React.MouseEvent) => void;
40
40
  /** Unified hover handler for all annotation types */
41
41
  onHover?: (annotationId: string | null) => void;
42
42
  /** Hover handler specifically for comment panel highlighting */
@@ -85,7 +85,7 @@ interface UICreateAnnotationParams {
85
85
  * - linking: Shows Quick Reference popup FIRST, creates when user confirms
86
86
  */
87
87
  interface AnnotationCreationHandler {
88
- onCreate?: (params: UICreateAnnotationParams) => void | Promise<void> | Promise<Annotation$p | undefined>;
88
+ onCreate?: (params: UICreateAnnotationParams) => void | Promise<void> | Promise<Annotation$m | undefined>;
89
89
  }
90
90
  /**
91
91
  * UI state for annotation toolbar and interactions.
@@ -120,7 +120,7 @@ interface AnnotationConfig {
120
120
  annotateMode?: boolean;
121
121
  }
122
122
 
123
- type Annotation$o = components['schemas']['Annotation'];
123
+ type Annotation$l = components['schemas']['Annotation'];
124
124
  /**
125
125
  * Parameters for creating an annotation
126
126
  */
@@ -167,7 +167,7 @@ interface AnnotationManager {
167
167
  * @param params - Creation parameters (rUri, motivation, selector, body)
168
168
  * @returns Promise resolving to the created annotation, or undefined if creation fails
169
169
  */
170
- createAnnotation: (params: CreateAnnotationParams) => Promise<Annotation$o | undefined>;
170
+ createAnnotation: (params: CreateAnnotationParams) => Promise<Annotation$l | undefined>;
171
171
  /**
172
172
  * Delete an annotation
173
173
  * @param params - Deletion parameters (annotationId, rUri)
@@ -270,9 +270,9 @@ interface NavigationProps {
270
270
  * Type definitions for resource viewer feature
271
271
  */
272
272
 
273
- type SemiontResource$3 = components['schemas']['ResourceDescriptor'];
274
- type Annotation$n = components['schemas']['Annotation'];
275
- type Motivation$b = components['schemas']['Motivation'];
273
+ type SemiontResource$4 = components['schemas']['ResourceDescriptor'];
274
+ type Annotation$k = components['schemas']['Annotation'];
275
+ type Motivation$8 = components['schemas']['Motivation'];
276
276
  /**
277
277
  * Selection for creating annotations
278
278
  */
@@ -285,6 +285,24 @@ interface TextSelection {
285
285
  svgSelector?: string;
286
286
  }
287
287
 
288
+ /**
289
+ * Progress type definitions for detection and generation flows
290
+ */
291
+
292
+ /**
293
+ * Detection progress type with frontend-specific extensions
294
+ */
295
+ interface DetectionProgress extends DetectionProgress$1 {
296
+ completedEntityTypes?: Array<{
297
+ entityType: string;
298
+ foundCount: number;
299
+ }>;
300
+ }
301
+ /**
302
+ * Generation progress type (no extensions needed, re-export API type)
303
+ */
304
+ type GenerationProgress = GenerationProgress$1;
305
+
288
306
  /**
289
307
  * Centralized annotation type registry
290
308
  *
@@ -299,8 +317,8 @@ interface TextSelection {
299
317
  * No aliasing, wrappers, or compatibility layers elsewhere.
300
318
  */
301
319
 
302
- type Annotation$m = components['schemas']['Annotation'];
303
- type Motivation$a = components['schemas']['Motivation'];
320
+ type Annotation$j = components['schemas']['Annotation'];
321
+ type Motivation$7 = components['schemas']['Motivation'];
304
322
  /**
305
323
  * Detection configuration for SSE-based annotation detection
306
324
  */
@@ -327,7 +345,7 @@ interface CreateConfig {
327
345
  * Handles clicks, hovers, detection, and other operations for one annotation type
328
346
  */
329
347
  interface Annotator {
330
- motivation: Motivation$a;
348
+ motivation: Motivation$7;
331
349
  internalType: string;
332
350
  displayName: string;
333
351
  description: string;
@@ -336,7 +354,7 @@ interface Annotator {
336
354
  isClickable: boolean;
337
355
  hasHoverInteraction: boolean;
338
356
  hasSidePanel: boolean;
339
- matchesAnnotation: (annotation: Annotation$m) => boolean;
357
+ matchesAnnotation: (annotation: Annotation$j) => boolean;
340
358
  announceOnCreate: string;
341
359
  detection?: DetectionConfig;
342
360
  create: CreateConfig;
@@ -355,7 +373,7 @@ declare const ANNOTATORS: Record<string, Annotator>;
355
373
  declare function createDetectionHandler(annotator: Annotator, context: {
356
374
  client: any;
357
375
  rUri: any;
358
- setDetectingMotivation: (motivation: Motivation$a | null) => void;
376
+ setDetectingMotivation: (motivation: Motivation$7 | null) => void;
359
377
  setMotivationDetectionProgress: (progress: any) => void;
360
378
  detectionStreamRef: MutableRefObject<any>;
361
379
  cacheManager: CacheManager;
@@ -368,7 +386,7 @@ declare function createDetectionHandler(annotator: Annotator, context: {
368
386
  */
369
387
  declare function createCancelDetectionHandler(context: {
370
388
  detectionStreamRef: MutableRefObject<any>;
371
- setDetectingMotivation: (motivation: Motivation$a | null) => void;
389
+ setDetectingMotivation: (motivation: Motivation$7 | null) => void;
372
390
  setMotivationDetectionProgress: (progress: any) => void;
373
391
  }): () => void;
374
392
 
@@ -448,7 +466,7 @@ declare function useResources(): {
448
466
  }, Error, ResourceUri, unknown>;
449
467
  };
450
468
  getByToken: {
451
- useQuery: (token: string) => _tanstack_react_query.UseQueryResult<{
469
+ useQuery: (cloneTokenStr: string) => _tanstack_react_query.UseQueryResult<{
452
470
  sourceResource: _semiont_api_client.components["schemas"]["ResourceDescriptor"];
453
471
  expiresAt: string;
454
472
  }, Error>;
@@ -540,7 +558,10 @@ declare function useAnnotations(): {
540
558
  }, unknown>;
541
559
  };
542
560
  delete: {
543
- useMutation: () => _tanstack_react_query.UseMutationResult<void, Error, ResourceAnnotationUri, unknown>;
561
+ useMutation: () => _tanstack_react_query.UseMutationResult<void, Error, {
562
+ annotationUri: ResourceAnnotationUri;
563
+ resourceUri: ResourceUri;
564
+ }, unknown>;
544
565
  };
545
566
  updateBody: {
546
567
  useMutation: () => _tanstack_react_query.UseMutationResult<{
@@ -815,18 +836,17 @@ declare const jsonLightHighlightStyle: HighlightStyle;
815
836
  * - Entity type badges
816
837
  */
817
838
 
818
- type Annotation$l = components['schemas']['Annotation'];
839
+ type Annotation$i = components['schemas']['Annotation'];
819
840
  /**
820
841
  * Reference Resolution Widget
821
842
  * Shows a small indicator next to references with hover preview
822
843
  */
823
844
  declare class ReferenceResolutionWidget extends WidgetType {
824
- readonly annotation: Annotation$l;
845
+ readonly annotation: Annotation$i;
825
846
  readonly targetDocumentName?: string | undefined;
826
- readonly onNavigate?: ((documentId: string) => void) | undefined;
827
- readonly onUnresolvedClick?: ((annotation: Annotation$l) => void) | undefined;
847
+ readonly eventBus?: EventBus | undefined;
828
848
  readonly isGenerating?: boolean | undefined;
829
- constructor(annotation: Annotation$l, targetDocumentName?: string | undefined, onNavigate?: ((documentId: string) => void) | undefined, onUnresolvedClick?: ((annotation: Annotation$l) => void) | undefined, isGenerating?: boolean | undefined);
849
+ constructor(annotation: Annotation$i, targetDocumentName?: string | undefined, eventBus?: EventBus | undefined, isGenerating?: boolean | undefined);
830
850
  eq(other: ReferenceResolutionWidget): boolean;
831
851
  toDOM(): HTMLSpanElement;
832
852
  private showPreview;
@@ -840,19 +860,23 @@ type ShapeType = 'rectangle' | 'circle' | 'polygon';
840
860
  interface AnnotateToolbarProps {
841
861
  selectedMotivation: SelectionMotivation | null;
842
862
  selectedClick: ClickAction;
843
- onSelectionChange: (motivation: SelectionMotivation | null) => void;
844
- onClickChange: (motivation: ClickAction) => void;
845
863
  showSelectionGroup?: boolean;
846
864
  showDeleteButton?: boolean;
847
865
  showShapeGroup?: boolean;
848
866
  selectedShape?: ShapeType;
849
- onShapeChange?: (shape: ShapeType) => void;
850
867
  mediaType?: string | null;
851
868
  annotateMode: boolean;
852
- onAnnotateModeToggle: () => void;
853
869
  annotators: Record<string, Annotator>;
854
870
  }
855
- declare function AnnotateToolbar({ selectedMotivation, selectedClick, onSelectionChange, onClickChange, showSelectionGroup, showDeleteButton, showShapeGroup, selectedShape, onShapeChange, mediaType, annotateMode, onAnnotateModeToggle, annotators }: AnnotateToolbarProps): react_jsx_runtime.JSX.Element;
871
+ /**
872
+ * Toolbar for annotation controls with mode, selection, click, and shape options
873
+ *
874
+ * @emits toolbar:selection-changed - Selection motivation changed. Payload: { motivation: SelectionMotivation | null }
875
+ * @emits toolbar:click-changed - Click action mode changed. Payload: { action: ClickAction }
876
+ * @emits toolbar:shape-changed - Drawing shape changed. Payload: { shape: ShapeType }
877
+ * @emits view:mode-toggled - View mode toggled between browse and annotate. Payload: undefined
878
+ */
879
+ declare function AnnotateToolbar({ selectedMotivation, selectedClick, showSelectionGroup, showDeleteButton, showShapeGroup, selectedShape, mediaType, annotateMode, annotators }: AnnotateToolbarProps): react_jsx_runtime.JSX.Element;
856
880
 
857
881
  /**
858
882
  * Media Type Shape Support
@@ -1057,23 +1081,6 @@ declare const OAuthUserSchema: {
1057
1081
  */
1058
1082
  declare function sanitizeImageURL(url: string): string | null;
1059
1083
 
1060
- type Annotation$k = components['schemas']['Annotation'];
1061
- /**
1062
- * Shared logic for annotation panel components
1063
- *
1064
- * Handles:
1065
- * - Sorting annotations by position in the resource
1066
- * - Hover effects: scroll to annotation and pulse highlight
1067
- * - Ref management for annotation elements
1068
- *
1069
- * Used by: HighlightPanel, AssessmentPanel, CommentsPanel, ReferencesPanel
1070
- */
1071
- declare function useAnnotationPanel<T extends Annotation$k>(annotations: T[], hoveredId: string | null | undefined): {
1072
- sortedAnnotations: T[];
1073
- containerRef: React$1.RefObject<HTMLDivElement>;
1074
- handleAnnotationRef: (id: string, el: HTMLElement | null) => void;
1075
- };
1076
-
1077
1084
  /**
1078
1085
  * Creates a debounced version of a callback function
1079
1086
  *
@@ -1103,25 +1110,6 @@ declare function useDebouncedCallback<T extends (...args: any[]) => any>(callbac
1103
1110
  */
1104
1111
  declare function useDebounce<T>(value: T, delay: number): T;
1105
1112
 
1106
- interface DetectionProgress extends DetectionProgress$1 {
1107
- completedEntityTypes?: Array<{
1108
- entityType: string;
1109
- foundCount: number;
1110
- }>;
1111
- }
1112
- interface UseDetectionProgressOptions {
1113
- rUri: ResourceUri;
1114
- onComplete?: (progress: DetectionProgress) => void;
1115
- onError?: (error: string) => void;
1116
- onProgress?: (progress: DetectionProgress) => void;
1117
- }
1118
- declare function useDetectionProgress({ rUri, onComplete, onError, onProgress }: UseDetectionProgressOptions): {
1119
- isDetecting: boolean;
1120
- progress: DetectionProgress | null;
1121
- startDetection: (entityTypes: string[]) => Promise<void>;
1122
- cancelDetection: () => void;
1123
- };
1124
-
1125
1113
  declare function useFormattedTime(milliseconds: number | null): string | null;
1126
1114
 
1127
1115
  interface UseFormValidationOptions {
@@ -1156,24 +1144,20 @@ declare const validationRules: {
1156
1144
  pattern: (regex: RegExp, message: string) => (value: string) => string | null;
1157
1145
  };
1158
1146
 
1159
- type GenerationProgress = GenerationProgress$1;
1160
- interface UseGenerationProgressOptions {
1161
- onComplete?: (progress: GenerationProgress) => void;
1162
- onError?: (error: string) => void;
1163
- onProgress?: (progress: GenerationProgress) => void;
1164
- }
1165
- declare function useGenerationProgress({ onComplete, onError, onProgress }: UseGenerationProgressOptions): {
1147
+ /**
1148
+ * Hook for managing generation progress tracking via events
1149
+ *
1150
+ * Subscribes to generation events from useEventOperations (Service Layer).
1151
+ * No direct SSE stream creation - follows three-layer architecture:
1152
+ * Service (useEventOperations) → Hook (this) → Component
1153
+ *
1154
+ * @subscribes generation:progress - Progress update during generation
1155
+ * @subscribes generation:complete - Generation completed successfully
1156
+ * @subscribes generation:failed - Error during generation
1157
+ */
1158
+ declare function useGenerationProgress(): {
1166
1159
  isGenerating: boolean;
1167
- progress: GenerationProgress$1 | null;
1168
- startGeneration: (referenceId: AnnotationUri, resourceId: ResourceUri, options: {
1169
- title?: string;
1170
- prompt?: string;
1171
- language?: string;
1172
- context: GenerationContext;
1173
- temperature?: number;
1174
- maxTokens?: number;
1175
- }) => Promise<void>;
1176
- cancelGeneration: () => void;
1160
+ progress: _semiont_api_client.GenerationProgress | null;
1177
1161
  clearProgress: () => void;
1178
1162
  };
1179
1163
 
@@ -1214,6 +1198,74 @@ declare function useLineNumbers(): {
1214
1198
  toggleLineNumbers: () => void;
1215
1199
  };
1216
1200
 
1201
+ /**
1202
+ * Generic router interface - works with any router that has push/replace methods
1203
+ * (Next.js App Router, Next.js Pages Router, React Router, etc.)
1204
+ */
1205
+ interface Router {
1206
+ push: (path: string) => void;
1207
+ replace?: (path: string) => void;
1208
+ [key: string]: any;
1209
+ }
1210
+ /**
1211
+ * Hook that wraps any router with event emission for observability
1212
+ *
1213
+ * Use this to wrap your router (Next.js, React Router, etc.) when you want
1214
+ * navigation actions to be observable through the NavigationEventBus.
1215
+ *
1216
+ * @emits navigation:router-push - Router navigation requested. Payload: { path: string, reason?: string }
1217
+ *
1218
+ * @example
1219
+ * ```typescript
1220
+ * // Next.js App Router
1221
+ * import { useRouter } from 'next/navigation';
1222
+ * const nextRouter = useRouter();
1223
+ * const router = useObservableRouter(nextRouter);
1224
+ * router.push('/know/discover', { reason: 'resource-closed' });
1225
+ *
1226
+ * // React Router
1227
+ * import { useNavigate } from 'react-router-dom';
1228
+ * const navigate = useNavigate();
1229
+ * const router = useObservableRouter({ push: navigate });
1230
+ * router.push('/know/discover', { reason: 'resource-closed' });
1231
+ * ```
1232
+ */
1233
+ declare function useObservableRouter<T extends Router>(baseRouter: T): T;
1234
+ /**
1235
+ * Request navigation with event emission
1236
+ *
1237
+ * This hook emits a navigation request event. The app must subscribe to
1238
+ * 'navigation:external-navigate' and perform the actual navigation using
1239
+ * its router (Next.js, React Router, etc.) to enable client-side routing.
1240
+ *
1241
+ * If no subscriber handles the event, falls back to window.location.href
1242
+ * after a brief delay to allow for event handling.
1243
+ *
1244
+ * @emits navigation:external-navigate - External navigation requested. Payload: { url: string, context?: Record<string, unknown> }
1245
+ *
1246
+ * @example
1247
+ * ```typescript
1248
+ * // In component (react-ui package)
1249
+ * const navigate = useObservableExternalNavigation();
1250
+ * navigate('/know/resource/123', { resourceId: '123' });
1251
+ *
1252
+ * // In app (frontend package) - subscribe and handle with Next.js router
1253
+ * const router = useRouter();
1254
+ * const eventBus = useEventBus();
1255
+ *
1256
+ * useEffect(() => {
1257
+ * const handleNav = ({ url }) => {
1258
+ * router.push(url); // Client-side navigation
1259
+ * };
1260
+ * eventBus.on('navigation:external-navigate', handleNav);
1261
+ * return () => eventBus.off('navigation:external-navigate', handleNav);
1262
+ * }, []);
1263
+ * ```
1264
+ */
1265
+ declare function useObservableExternalNavigation(): (url: string, metadata?: {
1266
+ resourceId?: string;
1267
+ }) => void;
1268
+
1217
1269
  interface UsePanelWidthOptions {
1218
1270
  defaultWidth?: number;
1219
1271
  minWidth?: number;
@@ -1375,6 +1427,18 @@ declare function useLoadingState(minLoadingTime?: number): {
1375
1427
  */
1376
1428
  declare function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T | ((val: T) => T)) => void];
1377
1429
 
1430
+ type SemiontResource$3 = components['schemas']['ResourceDescriptor'];
1431
+ interface UseResourceContentResult {
1432
+ content: string;
1433
+ loading: boolean;
1434
+ }
1435
+ /**
1436
+ * Hook to load resource content (representation)
1437
+ *
1438
+ * Fetches the primary representation of a resource based on its media type.
1439
+ */
1440
+ declare function useResourceContent(rUri: ResourceUri, resource: SemiontResource$3): UseResourceContentResult;
1441
+
1378
1442
  interface AnnotationProviderProps {
1379
1443
  annotationManager: AnnotationManager;
1380
1444
  children: React__default.ReactNode;
@@ -1388,6 +1452,8 @@ interface AnnotationProviderProps {
1388
1452
  * Example usage:
1389
1453
  * ```typescript
1390
1454
  * // In app (apps/frontend/src/hooks/useAnnotationManager.ts)
1455
+ * import { uriToAnnotationIdOrPassthrough } from '@semiont/core';
1456
+ *
1391
1457
  * function useAnnotationManager(): AnnotationManager {
1392
1458
  * const annotations = useAnnotations();
1393
1459
  * const createMutation = annotations.create.useMutation();
@@ -1402,7 +1468,7 @@ interface AnnotationProviderProps {
1402
1468
  * return result.annotation;
1403
1469
  * },
1404
1470
  * deleteAnnotation: async (params) => {
1405
- * const annotationIdSegment = params.annotationId.split('/').pop() || params.annotationId;
1471
+ * const annotationIdSegment = uriToAnnotationIdOrPassthrough(params.annotationId);
1406
1472
  * await deleteMutation.mutateAsync(resourceAnnotationUri(`${params.rUri}/annotations/${annotationIdSegment}`));
1407
1473
  * }
1408
1474
  * };
@@ -1455,20 +1521,41 @@ declare function AnnotationUIProvider({ children }: AnnotationUIProviderProps):
1455
1521
  declare function useAnnotationUI(): AnnotationUIContextType;
1456
1522
 
1457
1523
  interface ApiClientProviderProps {
1458
- apiClientManager: ApiClientManager;
1524
+ baseUrl: string;
1459
1525
  children: ReactNode;
1460
1526
  }
1461
1527
  /**
1462
- * Provider for API client management
1463
- * Apps must provide an ApiClientManager implementation
1528
+ * Provider for API client - creates a stateless singleton client
1529
+ * The client instance never changes (no token dependency)
1530
+ * Auth tokens are passed per-request via useAuthToken() in calling code
1464
1531
  */
1465
- declare function ApiClientProvider({ apiClientManager, children, }: ApiClientProviderProps): react_jsx_runtime.JSX.Element;
1532
+ declare function ApiClientProvider({ baseUrl: url, children, }: ApiClientProviderProps): react_jsx_runtime.JSX.Element;
1466
1533
  /**
1467
- * Hook to access the API client
1534
+ * Hook to access the stateless API client singleton
1468
1535
  * Must be used within an ApiClientProvider
1469
- * @returns API client instance (null if not authenticated)
1536
+ * @returns Stateless SemiontApiClient instance
1537
+ */
1538
+ declare function useApiClient(): SemiontApiClient;
1539
+
1540
+ interface AuthTokenProviderProps {
1541
+ token: string | null;
1542
+ children: ReactNode;
1543
+ }
1544
+ /**
1545
+ * Provider for auth token
1546
+ * Pass the current token value - React handles the rest
1547
+ */
1548
+ declare function AuthTokenProvider({ token, children, }: AuthTokenProviderProps): react_jsx_runtime.JSX.Element;
1549
+ /**
1550
+ * Hook to get current auth token
1551
+ *
1552
+ * Returns the current token value from context.
1553
+ * Re-renders automatically when token changes (normal React behavior).
1554
+ *
1555
+ * @returns Current access token (null if not authenticated)
1556
+ * @throws Error if used outside AuthTokenProvider
1470
1557
  */
1471
- declare function useApiClient(): _semiont_api_client.SemiontApiClient | null;
1558
+ declare function useAuthToken(): string | null;
1472
1559
 
1473
1560
  interface CacheProviderProps {
1474
1561
  cacheManager: CacheManager;
@@ -1512,60 +1599,50 @@ declare function CacheProvider({ cacheManager, children }: CacheProviderProps):
1512
1599
  */
1513
1600
  declare function useCacheManager(): CacheManager;
1514
1601
 
1515
- /**
1516
- * Selection data for annotation creation
1517
- */
1518
- interface SelectionData {
1519
- exact: string;
1520
- start: number;
1521
- end: number;
1522
- svgSelector?: string;
1523
- fragmentSelector?: string;
1524
- conformsTo?: string;
1525
- prefix?: string;
1526
- suffix?: string;
1527
- }
1528
- type EventBus = ReturnType<typeof mitt<MakeMeaningEventMap>>;
1529
- interface MakeMeaningEventBusProviderProps {
1530
- rUri: ResourceUri;
1531
- children: ReactNode;
1602
+ interface EventOperationsConfig {
1603
+ client: SemiontApiClient;
1604
+ resourceUri: ResourceUri;
1532
1605
  }
1533
1606
  /**
1534
- * Unified event bus provider for all events (backend + UI)
1607
+ * Hook that subscribes to operation events and coordinates API calls
1535
1608
  *
1536
- * Backend events: Make-meaning's event-sourced domain events from SSE
1537
- * UI events: Local user interactions (enables real-time collaboration)
1609
+ * This hook implements the event-driven architecture by listening to events
1610
+ * emitted by UI components and translating them into API operations.
1538
1611
  *
1539
- * This unified bus allows:
1540
- * 1. Components to emit UI events (selections, requests)
1541
- * 2. Other components to react to those events
1542
- * 3. Backend events to flow through the same bus
1543
- * 4. Foundation for peer-to-peer real-time collaboration
1612
+ * @param emitter - The mitt event bus instance
1613
+ * @param config - Configuration including API client and callbacks
1544
1614
  */
1545
- declare function MakeMeaningEventBusProvider({ rUri, children }: MakeMeaningEventBusProviderProps): react_jsx_runtime.JSX.Element;
1615
+ declare function useEventOperations(emitter: Emitter<EventMap>, config: EventOperationsConfig): void;
1616
+
1546
1617
  /**
1547
- * Hook to access make-meaning event bus
1618
+ * Subscribe to an event bus event with automatic cleanup.
1548
1619
  *
1549
- * Use this to subscribe to make-meaning's domain events directly.
1550
- * Think in detection, generation, annotation semantics - not HTTP.
1620
+ * This hook solves the "stale closure" problem by always using the latest
1621
+ * version of the handler without re-subscribing.
1551
1622
  *
1552
1623
  * @example
1553
- * ```typescript
1554
- * const eventBus = useMakeMeaningEvents();
1555
- *
1556
- * useEffect(() => {
1557
- * // Listen to make-meaning's detection progress
1558
- * const handler = (event) => {
1559
- * console.log('Make-meaning is detecting:', event.payload.currentStep);
1560
- * console.log('Found so far:', event.payload.foundCount);
1561
- * };
1624
+ * ```tsx
1625
+ * useEventSubscription('annotation:created', ({ annotation }) => {
1626
+ * // This always uses the latest props/state
1627
+ * triggerSparkleAnimation(annotation.id);
1628
+ * });
1629
+ * ```
1630
+ */
1631
+ declare function useEventSubscription<K extends keyof EventMap>(eventName: K, handler: (payload: EventMap[K]) => void): void;
1632
+ /**
1633
+ * Subscribe to multiple events at once.
1562
1634
  *
1563
- * eventBus.on('detection:progress', handler);
1564
- * return () => eventBus.off('detection:progress', handler);
1565
- * }, [eventBus]);
1635
+ * @example
1636
+ * ```tsx
1637
+ * useEventSubscriptions({
1638
+ * 'annotation:created': ({ annotation }) => setNewAnnotation(annotation),
1639
+ * 'annotation:deleted': ({ annotationId }) => removeAnnotation(annotationId),
1640
+ * });
1566
1641
  * ```
1567
1642
  */
1568
- declare function useMakeMeaningEvents(): EventBus;
1643
+ declare function useEventSubscriptions(subscriptions: {
1644
+ [K in keyof EventMap]?: (payload: EventMap[K]) => void;
1645
+ }): void;
1569
1646
 
1570
1647
  /**
1571
1648
  * Provider Pattern: Accepts OpenResourcesManager implementation as prop
@@ -1594,11 +1671,10 @@ declare function OpenResourcesProvider({ openResourcesManager, children }: {
1594
1671
  */
1595
1672
  declare function useOpenResources(): OpenResourcesManager;
1596
1673
 
1597
- type Annotation$j = components['schemas']['Annotation'];
1674
+ type Annotation$h = components['schemas']['Annotation'];
1598
1675
  interface ResourceAnnotationsContextType {
1599
1676
  newAnnotationIds: Set<string>;
1600
- createAnnotation: (rUri: ResourceUri, motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging', selector: Selector | Selector[], body?: any[]) => Promise<Annotation$j | undefined>;
1601
- deleteAnnotation: (annotationId: string, rUri: ResourceUri) => Promise<void>;
1677
+ createAnnotation: (rUri: ResourceUri, motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging', selector: Selector | Selector[], body?: any[]) => Promise<Annotation$h | undefined>;
1602
1678
  clearNewAnnotationId: (id: AnnotationUri) => void;
1603
1679
  triggerSparkleAnimation: (annotationId: string) => void;
1604
1680
  }
@@ -1741,18 +1817,16 @@ declare function usePreloadTranslations(): {
1741
1817
  isLoaded: (locale: string) => boolean;
1742
1818
  };
1743
1819
 
1744
- type Annotation$i = components['schemas']['Annotation'];
1820
+ type Annotation$g = components['schemas']['Annotation'];
1745
1821
  interface TextSegment {
1746
1822
  exact: string;
1747
- annotation?: Annotation$i;
1823
+ annotation?: Annotation$g;
1748
1824
  start: number;
1749
1825
  end: number;
1750
1826
  }
1751
1827
  interface Props$b {
1752
1828
  content: string;
1753
- segments: TextSegment[];
1754
- onAnnotationClick?: (annotation: Annotation$i) => void;
1755
- onAnnotationHover?: (annotationId: string | null) => void;
1829
+ segments?: TextSegment[];
1756
1830
  onTextSelect?: (exact: string, position: {
1757
1831
  start: number;
1758
1832
  end: number;
@@ -1766,23 +1840,23 @@ interface Props$b {
1766
1840
  sourceView?: boolean;
1767
1841
  showLineNumbers?: boolean;
1768
1842
  enableWidgets?: boolean;
1769
- onEntityTypeClick?: (entityType: string) => void;
1770
- onReferenceNavigate?: (documentId: string) => void;
1771
- onUnresolvedReferenceClick?: (annotation: Annotation$i) => void;
1843
+ eventBus?: EventBus;
1772
1844
  getTargetDocumentName?: (documentId: string) => string | undefined;
1773
1845
  generatingReferenceId?: string | null;
1774
- onDeleteAnnotation?: (annotation: Annotation$i) => void;
1775
- annotators: Record<string, Annotator>;
1776
1846
  }
1777
- declare function CodeMirrorRenderer({ content, segments, onAnnotationClick, onAnnotationHover, onChange, editable, newAnnotationIds, hoveredAnnotationId, hoveredCommentId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, onEntityTypeClick, onReferenceNavigate, onUnresolvedReferenceClick, getTargetDocumentName, generatingReferenceId, onDeleteAnnotation, annotators }: Props$b): react_jsx_runtime.JSX.Element;
1847
+ declare function CodeMirrorRenderer({ content, segments, onChange, editable, newAnnotationIds, hoveredAnnotationId, hoveredCommentId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, eventBus, getTargetDocumentName, generatingReferenceId }: Props$b): react_jsx_runtime.JSX.Element;
1778
1848
 
1779
- type Motivation$9 = components['schemas']['Motivation'];
1849
+ type Motivation$6 = components['schemas']['Motivation'];
1780
1850
  interface DetectionProgressWidgetProps {
1781
1851
  progress: DetectionProgress | null;
1782
- onCancel?: () => void;
1783
- annotationType?: Motivation$9 | 'reference';
1852
+ annotationType?: Motivation$6 | 'reference';
1784
1853
  }
1785
- declare function DetectionProgressWidget({ progress, onCancel, annotationType }: DetectionProgressWidgetProps): react_jsx_runtime.JSX.Element | null;
1854
+ /**
1855
+ * Widget for displaying detection progress with cancel functionality
1856
+ *
1857
+ * @emits job:cancel-requested - User requested to cancel detection job. Payload: { jobType: string }
1858
+ */
1859
+ declare function DetectionProgressWidget({ progress, annotationType }: DetectionProgressWidgetProps): react_jsx_runtime.JSX.Element | null;
1786
1860
 
1787
1861
  interface Props$a {
1788
1862
  children: ReactNode;
@@ -1812,7 +1886,7 @@ declare function AsyncErrorBoundary({ children }: {
1812
1886
  children: ReactNode;
1813
1887
  }): react_jsx_runtime.JSX.Element;
1814
1888
 
1815
- type Annotation$h = components['schemas']['Annotation'];
1889
+ type Annotation$f = components['schemas']['Annotation'];
1816
1890
  interface LiveRegionContextType {
1817
1891
  announce: (message: string, priority?: 'polite' | 'assertive') => void;
1818
1892
  }
@@ -1828,9 +1902,9 @@ declare function useSearchAnnouncements(): {
1828
1902
  declare function useDocumentAnnouncements(annotators?: Record<string, Annotator>): {
1829
1903
  announceDocumentSaved: () => void;
1830
1904
  announceDocumentDeleted: () => void;
1831
- announceAnnotationCreated: (annotation: Annotation$h) => void;
1905
+ announceAnnotationCreated: (annotation: Annotation$f) => void;
1832
1906
  announceAnnotationDeleted: () => void;
1833
- announceAnnotationUpdated: (annotation: Annotation$h) => void;
1907
+ announceAnnotationUpdated: (annotation: Annotation$f) => void;
1834
1908
  announceError: (message: string) => void;
1835
1909
  };
1836
1910
  declare function useResourceLoadingAnnouncements(): {
@@ -1924,25 +1998,33 @@ type ToolbarContext = 'document' | 'simple';
1924
1998
  interface Props$9<T extends string = string> {
1925
1999
  context: ToolbarContext;
1926
2000
  activePanel: T | null;
1927
- onPanelToggle: (panel: T) => void;
1928
2001
  isArchived?: boolean;
1929
2002
  }
1930
- declare function Toolbar<T extends string = string>({ context, activePanel, onPanelToggle, isArchived }: Props$9<T>): react_jsx_runtime.JSX.Element;
2003
+ /**
2004
+ * Toolbar component for panel navigation
2005
+ *
2006
+ * @emits panel:toggle - Toggle panel visibility. Payload: { panel: string }
2007
+ */
2008
+ declare function Toolbar<T extends string = string>({ context, activePanel, isArchived }: Props$9<T>): react_jsx_runtime.JSX.Element;
1931
2009
 
1932
2010
  interface SettingsPanelProps {
1933
2011
  showLineNumbers: boolean;
1934
- onLineNumbersToggle: () => void;
1935
2012
  theme: 'light' | 'dark' | 'system';
1936
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
1937
2013
  locale: string;
1938
- onLocaleChange: (locale: string) => void;
1939
2014
  isPendingLocaleChange?: boolean;
1940
2015
  }
1941
- declare function SettingsPanel({ showLineNumbers, onLineNumbersToggle, theme, onThemeChange, locale, onLocaleChange, isPendingLocaleChange }: SettingsPanelProps): react_jsx_runtime.JSX.Element;
2016
+ /**
2017
+ * Settings panel for application preferences
2018
+ *
2019
+ * @emits settings:locale-changed - Locale changed by user. Payload: { locale: string }
2020
+ * @emits settings:line-numbers-toggled - Line numbers toggled on/off. Payload: undefined
2021
+ * @emits settings:theme-changed - Theme changed by user. Payload: { theme: 'light' | 'dark' | 'system' }
2022
+ */
2023
+ declare function SettingsPanel({ showLineNumbers, theme, locale, isPendingLocaleChange }: SettingsPanelProps): react_jsx_runtime.JSX.Element;
1942
2024
 
1943
- type Annotation$g = components['schemas']['Annotation'];
2025
+ type Annotation$e = components['schemas']['Annotation'];
1944
2026
  interface JsonLdViewProps {
1945
- annotation: Annotation$g;
2027
+ annotation: Annotation$e;
1946
2028
  onBack: () => void;
1947
2029
  }
1948
2030
  declare function JsonLdView({ annotation, onBack }: JsonLdViewProps): react_jsx_runtime.JSX.Element;
@@ -1973,40 +2055,43 @@ interface PopupContainerProps {
1973
2055
  }
1974
2056
  declare function PopupContainer({ children, position, onClose, isOpen, wide }: PopupContainerProps): react_jsx_runtime.JSX.Element;
1975
2057
 
1976
- type Annotation$f = components['schemas']['Annotation'];
2058
+ type Annotation$d = components['schemas']['Annotation'];
1977
2059
  interface AnnotationOverlayProps {
1978
- annotations: Annotation$f[];
2060
+ annotations: Annotation$d[];
1979
2061
  imageWidth: number;
1980
2062
  imageHeight: number;
1981
2063
  displayWidth: number;
1982
2064
  displayHeight: number;
1983
- onAnnotationClick?: (annotation: Annotation$f) => void;
1984
- onAnnotationHover?: (annotationId: string | null) => void;
2065
+ eventBus?: EventBus;
1985
2066
  hoveredAnnotationId?: string | null;
1986
2067
  selectedAnnotationId?: string | null;
1987
2068
  }
1988
2069
  /**
1989
2070
  * Render annotation overlay - displays existing annotations as SVG shapes
2071
+ *
2072
+ * @emits annotation:hover - Annotation hovered or unhovered. Payload: { annotationId: string | null }
2073
+ * @emits annotation:click - Annotation clicked. Payload: { annotationId: string, motivation: Motivation }
1990
2074
  */
1991
- declare function AnnotationOverlay({ annotations, imageWidth, imageHeight, displayWidth, displayHeight, onAnnotationClick, onAnnotationHover, hoveredAnnotationId, selectedAnnotationId }: AnnotationOverlayProps): react_jsx_runtime.JSX.Element;
2075
+ declare function AnnotationOverlay({ annotations, imageWidth, imageHeight, displayWidth, displayHeight, eventBus, hoveredAnnotationId, selectedAnnotationId }: AnnotationOverlayProps): react_jsx_runtime.JSX.Element;
1992
2076
 
1993
- type Annotation$e = components['schemas']['Annotation'];
2077
+ type Annotation$c = components['schemas']['Annotation'];
1994
2078
  type DrawingMode = 'rectangle' | 'polygon' | 'circle' | 'freeform' | null;
1995
2079
  interface SvgDrawingCanvasProps {
1996
2080
  resourceUri: ResourceUri;
1997
- existingAnnotations?: Annotation$e[];
2081
+ existingAnnotations?: Annotation$c[];
1998
2082
  drawingMode: DrawingMode;
1999
2083
  selectedMotivation?: SelectionMotivation | null;
2000
- onAnnotationCreate?: (svg: string, position?: {
2001
- x: number;
2002
- y: number;
2003
- }) => void;
2004
- onAnnotationClick?: (annotation: Annotation$e) => void;
2005
- onAnnotationHover?: (annotationId: string | null) => void;
2084
+ eventBus?: EventBus;
2006
2085
  hoveredAnnotationId?: string | null;
2007
2086
  selectedAnnotationId?: string | null;
2008
2087
  }
2009
- declare function SvgDrawingCanvas({ resourceUri, existingAnnotations, drawingMode, selectedMotivation, onAnnotationCreate, onAnnotationClick, onAnnotationHover, hoveredAnnotationId, selectedAnnotationId }: SvgDrawingCanvasProps): react_jsx_runtime.JSX.Element;
2088
+ /**
2089
+ * SVG-based drawing canvas for creating image annotations with shapes
2090
+ *
2091
+ * @emits annotation:click - Annotation clicked on canvas. Payload: { annotationId: string, motivation: Motivation }
2092
+ * @emits annotation:requested - New annotation drawn on canvas. Payload: { selector: SvgSelector, motivation: SelectionMotivation }
2093
+ */
2094
+ declare function SvgDrawingCanvas({ resourceUri, existingAnnotations, drawingMode, selectedMotivation, eventBus, hoveredAnnotationId, selectedAnnotationId }: SvgDrawingCanvasProps): react_jsx_runtime.JSX.Element;
2010
2095
 
2011
2096
  interface KeyboardShortcutsHelpModalProps {
2012
2097
  isOpen: boolean;
@@ -2021,37 +2106,30 @@ interface ProposeEntitiesModalProps {
2021
2106
  }
2022
2107
  declare function ProposeEntitiesModal({ isOpen, onConfirm, onCancel }: ProposeEntitiesModalProps): react_jsx_runtime.JSX.Element;
2023
2108
 
2024
- type Annotation$d = components['schemas']['Annotation'];
2025
- type Motivation$8 = components['schemas']['Motivation'];
2026
- interface PendingAnnotation$7 {
2027
- selector: Selector | Selector[];
2028
- motivation: Motivation$8;
2029
- }
2030
-
2031
2109
  interface Props$8 {
2032
2110
  content: string;
2033
2111
  mimeType?: string;
2034
2112
  resourceUri?: string;
2035
2113
  annotations: AnnotationsCollection;
2036
- handlers?: AnnotationHandlers;
2037
- creationHandler?: AnnotationCreationHandler;
2038
2114
  uiState: AnnotationUIState;
2039
2115
  onUIStateChange?: (state: Partial<AnnotationUIState>) => void;
2040
2116
  editable?: boolean;
2041
2117
  enableWidgets?: boolean;
2042
- onEntityTypeClick?: (entityType: string) => void;
2043
- onReferenceNavigate?: (documentId: string) => void;
2044
- onUnresolvedReferenceClick?: (annotation: Annotation$d) => void;
2045
2118
  getTargetDocumentName?: (documentId: string) => string | undefined;
2046
2119
  generatingReferenceId?: string | null;
2047
- onDeleteAnnotation?: (annotation: Annotation$d) => void;
2048
2120
  showLineNumbers?: boolean;
2049
2121
  annotateMode: boolean;
2050
- onAnnotateModeToggle: () => void;
2051
- onAnnotationRequested?: (pending: PendingAnnotation$7) => void;
2052
- annotators: Record<string, Annotator>;
2053
2122
  }
2054
- declare function AnnotateView({ content, mimeType, resourceUri, annotations, handlers, creationHandler, uiState, onUIStateChange, enableWidgets, onEntityTypeClick, onReferenceNavigate, onUnresolvedReferenceClick, getTargetDocumentName, generatingReferenceId, onDeleteAnnotation, showLineNumbers, annotateMode, onAnnotateModeToggle, onAnnotationRequested, annotators }: Props$8): react_jsx_runtime.JSX.Element;
2123
+ /**
2124
+ * View component for annotating resources with text selection and drawing
2125
+ *
2126
+ * @emits annotation:requested - User requested to create annotation. Payload: { selector: Selector | Selector[], motivation: SelectionMotivation }
2127
+ * @subscribes toolbar:selection-changed - Toolbar selection changed. Payload: { motivation: string | null }
2128
+ * @subscribes toolbar:click-changed - Toolbar click action changed. Payload: { action: string }
2129
+ * @subscribes toolbar:shape-changed - Toolbar shape changed. Payload: { shape: string }
2130
+ * @subscribes annotation:hover - Annotation hovered. Payload: { annotationId: string | null }
2131
+ */
2132
+ declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetDocumentName, generatingReferenceId, showLineNumbers, annotateMode }: Props$8): react_jsx_runtime.JSX.Element;
2055
2133
 
2056
2134
  interface Props$7 {
2057
2135
  rUri: ResourceUri;
@@ -2068,16 +2146,21 @@ interface Props$6 {
2068
2146
  mimeType: string;
2069
2147
  resourceUri: string;
2070
2148
  annotations: AnnotationsCollection;
2071
- handlers?: AnnotationHandlers;
2072
2149
  hoveredAnnotationId?: string | null;
2073
2150
  hoveredCommentId?: string | null;
2074
2151
  selectedClick?: ClickAction;
2075
- onClickChange?: (motivation: ClickAction) => void;
2076
2152
  annotateMode: boolean;
2077
- onAnnotateModeToggle: () => void;
2078
- annotators: Record<string, Annotator>;
2079
2153
  }
2080
- declare function BrowseView({ content, mimeType, resourceUri, annotations, handlers, hoveredAnnotationId, hoveredCommentId, selectedClick, onClickChange, annotateMode, onAnnotateModeToggle, annotators }: Props$6): react_jsx_runtime.JSX.Element;
2154
+ /**
2155
+ * View component for browsing annotated resources in read-only mode
2156
+ *
2157
+ * @emits annotation:click - User clicked on annotation. Payload: { annotationId: string, motivation: Motivation }
2158
+ * @emits annotation:hover - User hovered over annotation. Payload: { annotationId: string | null }
2159
+ *
2160
+ * @subscribes annotation:hover - Highlight annotation on hover. Payload: { annotationId: string | null }
2161
+ * @subscribes annotation:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
2162
+ */
2163
+ declare function BrowseView({ content, mimeType, resourceUri, annotations, selectedClick, annotateMode }: Props$6): react_jsx_runtime.JSX.Element;
2081
2164
 
2082
2165
  type TranslateFn$4 = (key: string, params?: Record<string, string | number>) => string;
2083
2166
  interface Props$5 {
@@ -2095,11 +2178,6 @@ interface Props$5 {
2095
2178
  declare function HistoryEvent({ event, annotations, allEvents, isRelated, t, Link, routes, onEventRef, onEventClick, onEventHover }: Props$5): react_jsx_runtime.JSX.Element;
2096
2179
 
2097
2180
  type SemiontResource$2 = components['schemas']['ResourceDescriptor'];
2098
- type Motivation$7 = components['schemas']['Motivation'];
2099
- interface PendingAnnotation$6 {
2100
- selector: Selector | Selector[];
2101
- motivation: Motivation$7;
2102
- }
2103
2181
  /**
2104
2182
  * ResourceViewer - Display and interact with resource content and annotations
2105
2183
  *
@@ -2125,36 +2203,40 @@ interface Props$4 {
2125
2203
  annotations: AnnotationsCollection;
2126
2204
  generatingReferenceId?: string | null;
2127
2205
  showLineNumbers?: boolean;
2128
- onAnnotationRequested?: (pending: PendingAnnotation$6) => void;
2129
- annotators: Record<string, Annotator>;
2206
+ hoveredAnnotationId?: string | null;
2130
2207
  }
2131
- declare function ResourceViewer({ resource, annotations, generatingReferenceId, showLineNumbers, onAnnotationRequested, annotators }: Props$4): react_jsx_runtime.JSX.Element;
2208
+ /**
2209
+ * @emits annotation:delete - User requested to delete annotation. Payload: { annotationId: string }
2210
+ * @emits panel:open - Request to open panel with annotation. Payload: { panel: string, scrollToAnnotationId?: string, motivation?: Motivation }
2211
+ *
2212
+ * @subscribes view:mode-toggled - Toggles between browse and annotate mode. Payload: { mode: 'browse' | 'annotate' }
2213
+ * @subscribes annotation:added - New annotation was added. Payload: { annotation: Annotation }
2214
+ * @subscribes annotation:removed - Annotation was removed. Payload: { annotationId: string }
2215
+ * @subscribes annotation:updated - Annotation was updated. Payload: { annotation: Annotation }
2216
+ * @subscribes toolbar:selection-changed - Text selection tool changed. Payload: { selection: boolean }
2217
+ * @subscribes toolbar:click-changed - Click annotation tool changed. Payload: { click: 'detail' | 'scroll' | null }
2218
+ * @subscribes toolbar:shape-changed - Drawing shape changed. Payload: { shape: string }
2219
+ * @subscribes annotation:click - User clicked on annotation. Payload: { annotationId: string }
2220
+ */
2221
+ declare function ResourceViewer({ resource, annotations, generatingReferenceId, showLineNumbers, hoveredAnnotationId: hoveredAnnotationIdProp }: Props$4): react_jsx_runtime.JSX.Element;
2132
2222
 
2133
- type Annotation$c = components['schemas']['Annotation'];
2223
+ type Annotation$b = components['schemas']['Annotation'];
2134
2224
  interface AssessmentEntryProps {
2135
- assessment: Annotation$c;
2225
+ assessment: Annotation$b;
2136
2226
  isFocused: boolean;
2137
- onClick: () => void;
2138
- onAssessmentRef: (assessmentId: string, el: HTMLElement | null) => void;
2139
- onAssessmentHover?: (assessmentId: string | null) => void;
2227
+ isHovered?: boolean;
2140
2228
  }
2141
- declare function AssessmentEntry({ assessment, isFocused, onClick, onAssessmentRef, onAssessmentHover, }: AssessmentEntryProps): react_jsx_runtime.JSX.Element;
2229
+ declare const AssessmentEntry: React$1.ForwardRefExoticComponent<AssessmentEntryProps & React$1.RefAttributes<HTMLDivElement>>;
2142
2230
 
2143
- type Annotation$b = components['schemas']['Annotation'];
2144
- type Motivation$6 = components['schemas']['Motivation'];
2145
- interface PendingAnnotation$5 {
2231
+ type Annotation$a = components['schemas']['Annotation'];
2232
+ type Motivation$5 = components['schemas']['Motivation'];
2233
+ interface PendingAnnotation$6 {
2146
2234
  selector: Selector | Selector[];
2147
- motivation: Motivation$6;
2235
+ motivation: Motivation$5;
2148
2236
  }
2149
2237
  interface AssessmentPanelProps {
2150
- annotations: Annotation$b[];
2151
- onAnnotationClick: (annotation: Annotation$b) => void;
2152
- focusedAnnotationId: string | null;
2153
- hoveredAnnotationId?: string | null;
2154
- onAnnotationHover?: (annotationId: string | null) => void;
2155
- onCreate: (assessmentText: string) => void;
2156
- pendingAnnotation: PendingAnnotation$5 | null;
2157
- onDetect?: (instructions?: string) => void | Promise<void>;
2238
+ annotations: Annotation$a[];
2239
+ pendingAnnotation: PendingAnnotation$6 | null;
2158
2240
  isDetecting?: boolean;
2159
2241
  detectionProgress?: {
2160
2242
  status: string;
@@ -2162,8 +2244,18 @@ interface AssessmentPanelProps {
2162
2244
  message?: string;
2163
2245
  } | null;
2164
2246
  annotateMode?: boolean;
2247
+ scrollToAnnotationId?: string | null;
2248
+ onScrollCompleted?: () => void;
2249
+ hoveredAnnotationId?: string | null;
2165
2250
  }
2166
- declare function AssessmentPanel({ annotations, onAnnotationClick, focusedAnnotationId, hoveredAnnotationId, onAnnotationHover, onCreate, pendingAnnotation, onDetect, isDetecting, detectionProgress, annotateMode, }: AssessmentPanelProps): react_jsx_runtime.JSX.Element;
2251
+ /**
2252
+ * Panel for managing assessment annotations with text input
2253
+ *
2254
+ * @emits annotation:create - Create new assessment annotation. Payload: { motivation: 'assessing', selector: Selector | Selector[], body: Body[] }
2255
+ * @emits annotation:cancel-pending - Cancel pending assessment annotation. Payload: undefined
2256
+ * @subscribes annotation:click - Annotation clicked. Payload: { annotationId: string }
2257
+ */
2258
+ declare function AssessmentPanel({ annotations, pendingAnnotation, isDetecting, detectionProgress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: AssessmentPanelProps): react_jsx_runtime.JSX.Element;
2167
2259
 
2168
2260
  interface Props$3 {
2169
2261
  isConnected: boolean;
@@ -2172,41 +2264,43 @@ interface Props$3 {
2172
2264
  }
2173
2265
  declare function CollaborationPanel({ isConnected, eventCount, lastEventTimestamp }: Props$3): react_jsx_runtime.JSX.Element;
2174
2266
 
2175
- type Annotation$a = components['schemas']['Annotation'];
2267
+ type Annotation$9 = components['schemas']['Annotation'];
2176
2268
  interface CommentEntryProps {
2177
- comment: Annotation$a;
2269
+ comment: Annotation$9;
2178
2270
  isFocused: boolean;
2179
- onClick: () => void;
2180
- onCommentRef: (commentId: string, el: HTMLElement | null) => void;
2181
- onCommentHover?: (commentId: string | null) => void;
2271
+ isHovered?: boolean;
2182
2272
  annotateMode?: boolean;
2183
2273
  }
2184
- declare function CommentEntry({ comment, isFocused, onClick, onCommentRef, onCommentHover, annotateMode, }: CommentEntryProps): react_jsx_runtime.JSX.Element;
2274
+ declare const CommentEntry: React$1.ForwardRefExoticComponent<CommentEntryProps & React$1.RefAttributes<HTMLDivElement>>;
2185
2275
 
2186
- type Annotation$9 = components['schemas']['Annotation'];
2187
- type Motivation$5 = components['schemas']['Motivation'];
2188
- interface PendingAnnotation$4 {
2276
+ type Annotation$8 = components['schemas']['Annotation'];
2277
+ type Motivation$4 = components['schemas']['Motivation'];
2278
+ interface PendingAnnotation$5 {
2189
2279
  selector: Selector | Selector[];
2190
- motivation: Motivation$5;
2280
+ motivation: Motivation$4;
2191
2281
  }
2192
2282
  interface CommentsPanelProps {
2193
- annotations: Annotation$9[];
2194
- onAnnotationClick: (annotation: Annotation$9) => void;
2195
- onCreate: (commentText: string) => void;
2196
- focusedAnnotationId: string | null;
2197
- hoveredAnnotationId?: string | null;
2198
- onAnnotationHover?: (annotationId: string | null) => void;
2199
- pendingAnnotation: PendingAnnotation$4 | null;
2283
+ annotations: Annotation$8[];
2284
+ pendingAnnotation: PendingAnnotation$5 | null;
2200
2285
  annotateMode?: boolean;
2201
- onDetect?: (instructions?: string, tone?: string) => void | Promise<void>;
2202
2286
  isDetecting?: boolean;
2203
2287
  detectionProgress?: {
2204
2288
  status: string;
2205
2289
  percentage?: number;
2206
2290
  message?: string;
2207
2291
  } | null;
2292
+ scrollToAnnotationId?: string | null;
2293
+ onScrollCompleted?: () => void;
2294
+ hoveredAnnotationId?: string | null;
2208
2295
  }
2209
- declare function CommentsPanel({ annotations, onAnnotationClick, onCreate, focusedAnnotationId, hoveredAnnotationId, onAnnotationHover, pendingAnnotation, annotateMode, onDetect, isDetecting, detectionProgress, }: CommentsPanelProps): react_jsx_runtime.JSX.Element;
2296
+ /**
2297
+ * Panel for managing comment annotations with text input
2298
+ *
2299
+ * @emits annotation:create - Create new comment annotation. Payload: { motivation: 'commenting', selector: Selector | Selector[], body: Body[] }
2300
+ * @emits annotation:cancel-pending - Cancel pending comment annotation. Payload: undefined
2301
+ * @subscribes annotation:click - Annotation clicked. Payload: { annotationId: string }
2302
+ */
2303
+ declare function CommentsPanel({ annotations, pendingAnnotation, annotateMode, isDetecting, detectionProgress, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): react_jsx_runtime.JSX.Element;
2210
2304
 
2211
2305
  interface DetectSectionProps {
2212
2306
  annotationType: 'highlight' | 'assessment' | 'comment';
@@ -2220,7 +2314,6 @@ interface DetectSectionProps {
2220
2314
  value: string;
2221
2315
  }>;
2222
2316
  } | null | undefined;
2223
- onDetect: (instructions?: string, tone?: string, density?: number) => void | Promise<void>;
2224
2317
  }
2225
2318
  /**
2226
2319
  * Shared detect section for Highlight, Assessment, and Comment panels
@@ -2230,34 +2323,28 @@ interface DetectSectionProps {
2230
2323
  * - Optional tone selector (for comments)
2231
2324
  * - Detect button with sparkle animation
2232
2325
  * - Progress display during detection
2326
+ *
2327
+ * @emits detection:start - Start detection for annotation type. Payload: { motivation: Motivation, options: { instructions?: string, tone?: string, density?: number } }
2233
2328
  */
2234
- declare function DetectSection({ annotationType, isDetecting, detectionProgress, onDetect }: DetectSectionProps): react_jsx_runtime.JSX.Element;
2329
+ declare function DetectSection({ annotationType, isDetecting, detectionProgress, }: DetectSectionProps): react_jsx_runtime.JSX.Element;
2235
2330
 
2236
- type Annotation$8 = components['schemas']['Annotation'];
2331
+ type Annotation$7 = components['schemas']['Annotation'];
2237
2332
  interface HighlightEntryProps {
2238
- highlight: Annotation$8;
2333
+ highlight: Annotation$7;
2239
2334
  isFocused: boolean;
2240
- onClick: () => void;
2241
- onHighlightRef: (highlightId: string, el: HTMLElement | null) => void;
2242
- onHighlightHover?: (highlightId: string | null) => void;
2335
+ isHovered?: boolean;
2243
2336
  }
2244
- declare function HighlightEntry({ highlight, isFocused, onClick, onHighlightRef, onHighlightHover, }: HighlightEntryProps): react_jsx_runtime.JSX.Element;
2337
+ declare const HighlightEntry: React$1.ForwardRefExoticComponent<HighlightEntryProps & React$1.RefAttributes<HTMLDivElement>>;
2245
2338
 
2246
- type Annotation$7 = components['schemas']['Annotation'];
2247
- type Motivation$4 = components['schemas']['Motivation'];
2248
- interface PendingAnnotation$3 {
2339
+ type Annotation$6 = components['schemas']['Annotation'];
2340
+ type Motivation$3 = components['schemas']['Motivation'];
2341
+ interface PendingAnnotation$4 {
2249
2342
  selector: Selector | Selector[];
2250
- motivation: Motivation$4;
2343
+ motivation: Motivation$3;
2251
2344
  }
2252
2345
  interface HighlightPanelProps {
2253
- annotations: Annotation$7[];
2254
- onAnnotationClick: (annotation: Annotation$7) => void;
2255
- focusedAnnotationId: string | null;
2256
- hoveredAnnotationId?: string | null;
2257
- onAnnotationHover?: (annotationId: string | null) => void;
2258
- onDetect?: (instructions?: string) => void | Promise<void>;
2259
- onCreate: (selector: Selector | Selector[]) => void;
2260
- pendingAnnotation: PendingAnnotation$3 | null;
2346
+ annotations: Annotation$6[];
2347
+ pendingAnnotation: PendingAnnotation$4 | null;
2261
2348
  isDetecting?: boolean;
2262
2349
  detectionProgress?: {
2263
2350
  status: string;
@@ -2265,8 +2352,17 @@ interface HighlightPanelProps {
2265
2352
  message?: string;
2266
2353
  } | null;
2267
2354
  annotateMode?: boolean;
2355
+ scrollToAnnotationId?: string | null;
2356
+ onScrollCompleted?: () => void;
2357
+ hoveredAnnotationId?: string | null;
2268
2358
  }
2269
- declare function HighlightPanel({ annotations, onAnnotationClick, focusedAnnotationId, hoveredAnnotationId, onAnnotationHover, onDetect, onCreate, pendingAnnotation, isDetecting, detectionProgress, annotateMode, }: HighlightPanelProps): react_jsx_runtime.JSX.Element;
2359
+ /**
2360
+ * Panel for managing highlight annotations with auto-creation
2361
+ *
2362
+ * @emits annotation:create - Create new highlight annotation (auto-triggered). Payload: { motivation: 'highlighting', selector: Selector | Selector[], body: Body[] }
2363
+ * @subscribes annotation:click - Annotation clicked. Payload: { annotationId: string }
2364
+ */
2365
+ declare function HighlightPanel({ annotations, pendingAnnotation, isDetecting, detectionProgress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: HighlightPanelProps): react_jsx_runtime.JSX.Element;
2270
2366
 
2271
2367
  type SemiontResource$1 = components['schemas']['ResourceDescriptor'];
2272
2368
  interface Props$2 {
@@ -2286,28 +2382,19 @@ interface PanelHeaderProps {
2286
2382
  */
2287
2383
  declare function PanelHeader({ count, title }: PanelHeaderProps): react_jsx_runtime.JSX.Element;
2288
2384
 
2289
- type Annotation$6 = components['schemas']['Annotation'];
2385
+ type Annotation$5 = components['schemas']['Annotation'];
2290
2386
  interface ReferenceEntryProps {
2291
- reference: Annotation$6;
2387
+ reference: Annotation$5;
2292
2388
  isFocused: boolean;
2293
- onClick: () => void;
2389
+ isHovered?: boolean;
2294
2390
  routes: RouteBuilder;
2295
- onReferenceRef: (referenceId: string, el: HTMLElement | null) => void;
2296
- onReferenceHover?: (referenceId: string | null) => void;
2297
- onGenerateDocument?: (referenceId: string, options: {
2298
- title: string;
2299
- prompt?: string;
2300
- }) => void;
2301
- onCreateDocument?: (annotationUri: string, title: string, entityTypes: string[]) => void;
2302
- onSearchDocuments?: (referenceId: string, searchTerm: string) => void;
2303
- onUpdateReference?: (referenceId: string, updates: Partial<Annotation$6>) => void;
2304
2391
  annotateMode?: boolean;
2305
2392
  isGenerating?: boolean;
2306
2393
  }
2307
- declare function ReferenceEntry({ reference, isFocused, onClick, routes, onReferenceRef, onReferenceHover, onGenerateDocument, onCreateDocument, onSearchDocuments, onUpdateReference, annotateMode, isGenerating, }: ReferenceEntryProps): react_jsx_runtime.JSX.Element;
2394
+ declare const ReferenceEntry: React$1.ForwardRefExoticComponent<ReferenceEntryProps & React$1.RefAttributes<HTMLDivElement>>;
2308
2395
 
2309
- type Annotation$5 = components['schemas']['Annotation'];
2310
- type Motivation$3 = components['schemas']['Motivation'];
2396
+ type Annotation$4 = components['schemas']['Annotation'];
2397
+ type Motivation$2 = components['schemas']['Motivation'];
2311
2398
  type ResponseContent<T> = T extends {
2312
2399
  responses: {
2313
2400
  200: {
@@ -2318,37 +2405,35 @@ type ResponseContent<T> = T extends {
2318
2405
  };
2319
2406
  } ? R : never;
2320
2407
  type ReferencedBy = ResponseContent<paths['/resources/{id}/referenced-by']['get']>['referencedBy'][number];
2321
- interface PendingAnnotation$2 {
2408
+ interface PendingAnnotation$3 {
2322
2409
  selector: Selector | Selector[];
2323
- motivation: Motivation$3;
2410
+ motivation: Motivation$2;
2324
2411
  }
2325
2412
  interface Props$1 {
2326
- annotations?: Annotation$5[];
2327
- onAnnotationClick?: (annotation: Annotation$5) => void;
2328
- focusedAnnotationId?: string | null;
2329
- hoveredAnnotationId?: string | null;
2330
- onAnnotationHover?: (annotationId: string | null) => void;
2331
- onDetect?: (selectedTypes: string[], includeDescriptiveReferences?: boolean) => void;
2332
- onCreate: (entityType?: string) => void;
2413
+ annotations?: Annotation$4[];
2333
2414
  isDetecting: boolean;
2334
2415
  detectionProgress: any;
2335
2416
  annotateMode?: boolean;
2336
2417
  Link: React__default.ComponentType<LinkComponentProps>;
2337
2418
  routes: RouteBuilder;
2338
2419
  allEntityTypes: string[];
2339
- onCancelDetection: () => void;
2340
- onSearchDocuments?: (referenceId: string, searchTerm: string) => void;
2341
- onGenerateDocument?: (referenceId: string, options: {
2342
- title: string;
2343
- prompt?: string;
2344
- }) => void;
2345
- onCreateDocument?: (annotationUri: string, title: string, entityTypes: string[]) => void;
2346
2420
  generatingReferenceId?: string | null;
2347
2421
  referencedBy?: ReferencedBy[];
2348
2422
  referencedByLoading?: boolean;
2349
- pendingAnnotation: PendingAnnotation$2 | null;
2423
+ pendingAnnotation: PendingAnnotation$3 | null;
2424
+ scrollToAnnotationId?: string | null;
2425
+ onScrollCompleted?: () => void;
2426
+ hoveredAnnotationId?: string | null;
2350
2427
  }
2351
- declare function ReferencesPanel({ annotations, onAnnotationClick, focusedAnnotationId, hoveredAnnotationId, onAnnotationHover, onDetect, onCreate, isDetecting, detectionProgress, annotateMode, Link, routes, allEntityTypes, onCancelDetection, onSearchDocuments, onGenerateDocument, onCreateDocument, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, }: Props$1): react_jsx_runtime.JSX.Element;
2428
+ /**
2429
+ * Panel for managing reference annotations with entity type detection
2430
+ *
2431
+ * @emits detection:start - Start reference detection. Payload: { motivation: 'linking', options: { entityTypes: string[], includeDescriptiveReferences: boolean } }
2432
+ * @emits annotation:create - Create new reference annotation. Payload: { motivation: 'linking', selector: Selector | Selector[], body: Body[] }
2433
+ * @emits annotation:cancel-pending - Cancel pending reference annotation. Payload: undefined
2434
+ * @subscribes annotation:click - Annotation clicked. Payload: { annotationId: string }
2435
+ */
2436
+ declare function ReferencesPanel({ annotations, isDetecting, detectionProgress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: Props$1): react_jsx_runtime.JSX.Element;
2352
2437
 
2353
2438
  interface Props {
2354
2439
  documentEntityTypes: string[];
@@ -2356,47 +2441,43 @@ interface Props {
2356
2441
  primaryMediaType?: string | undefined;
2357
2442
  primaryByteSize?: number | undefined;
2358
2443
  isArchived?: boolean;
2359
- onArchive?: () => void;
2360
- onUnarchive?: () => void;
2361
- onClone?: () => void;
2362
2444
  }
2363
- declare function ResourceInfoPanel({ documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, isArchived, onArchive, onUnarchive, onClone }: Props): react_jsx_runtime.JSX.Element;
2445
+ /**
2446
+ * Panel for displaying resource metadata and management actions
2447
+ *
2448
+ * @emits resource:clone - Clone this resource. Payload: undefined
2449
+ * @emits resource:unarchive - Unarchive this resource. Payload: undefined
2450
+ * @emits resource:archive - Archive this resource. Payload: undefined
2451
+ */
2452
+ declare function ResourceInfoPanel({ documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, isArchived, }: Props): react_jsx_runtime.JSX.Element;
2364
2453
 
2365
- type Annotation$4 = components['schemas']['Annotation'];
2454
+ type Annotation$3 = components['schemas']['Annotation'];
2366
2455
  interface StatisticsPanelProps {
2367
- highlights: Annotation$4[];
2368
- comments: Annotation$4[];
2369
- assessments: Annotation$4[];
2370
- references: Annotation$4[];
2371
- tags: Annotation$4[];
2456
+ highlights: Annotation$3[];
2457
+ comments: Annotation$3[];
2458
+ assessments: Annotation$3[];
2459
+ references: Annotation$3[];
2460
+ tags: Annotation$3[];
2372
2461
  }
2373
2462
  declare function StatisticsPanel({ highlights, comments, assessments, references, tags }: StatisticsPanelProps): react_jsx_runtime.JSX.Element;
2374
2463
 
2375
- type Annotation$3 = components['schemas']['Annotation'];
2464
+ type Annotation$2 = components['schemas']['Annotation'];
2376
2465
  interface TagEntryProps {
2377
- tag: Annotation$3;
2466
+ tag: Annotation$2;
2378
2467
  isFocused: boolean;
2379
- onClick: () => void;
2380
- onTagRef: (tagId: string, el: HTMLElement | null) => void;
2381
- onTagHover?: (tagId: string | null) => void;
2468
+ isHovered?: boolean;
2382
2469
  }
2383
- declare function TagEntry({ tag, isFocused, onClick, onTagRef, onTagHover, }: TagEntryProps): react_jsx_runtime.JSX.Element;
2470
+ declare const TagEntry: React$1.ForwardRefExoticComponent<TagEntryProps & React$1.RefAttributes<HTMLDivElement>>;
2384
2471
 
2385
- type Annotation$2 = components['schemas']['Annotation'];
2386
- type Motivation$2 = components['schemas']['Motivation'];
2387
- interface PendingAnnotation$1 {
2472
+ type Annotation$1 = components['schemas']['Annotation'];
2473
+ type Motivation$1 = components['schemas']['Motivation'];
2474
+ interface PendingAnnotation$2 {
2388
2475
  selector: Selector | Selector[];
2389
- motivation: Motivation$2;
2476
+ motivation: Motivation$1;
2390
2477
  }
2391
2478
  interface TaggingPanelProps {
2392
- annotations: Annotation$2[];
2393
- onAnnotationClick: (annotation: Annotation$2) => void;
2394
- focusedAnnotationId: string | null;
2395
- hoveredAnnotationId?: string | null;
2396
- onAnnotationHover?: (annotationId: string | null) => void;
2479
+ annotations: Annotation$1[];
2397
2480
  annotateMode?: boolean;
2398
- onDetect?: (schemaId: string, categories: string[]) => void | Promise<void>;
2399
- onCreate: (schemaId: string, category: string) => void | Promise<void>;
2400
2481
  isDetecting?: boolean;
2401
2482
  detectionProgress?: {
2402
2483
  status: string;
@@ -2410,46 +2491,42 @@ interface TaggingPanelProps {
2410
2491
  value: string;
2411
2492
  }>;
2412
2493
  } | null;
2413
- pendingAnnotation: PendingAnnotation$1 | null;
2494
+ pendingAnnotation: PendingAnnotation$2 | null;
2495
+ scrollToAnnotationId?: string | null;
2496
+ onScrollCompleted?: () => void;
2497
+ hoveredAnnotationId?: string | null;
2414
2498
  }
2415
- declare function TaggingPanel({ annotations, onAnnotationClick, focusedAnnotationId, hoveredAnnotationId, onAnnotationHover, annotateMode, onDetect, onCreate, isDetecting, detectionProgress, pendingAnnotation }: TaggingPanelProps): react_jsx_runtime.JSX.Element;
2499
+ /**
2500
+ * Panel for managing tag annotations with schema-based detection
2501
+ *
2502
+ * @emits detection:start - Start tag detection. Payload: { motivation: 'tagging', options: { schemaId: string, categories: string[] } }
2503
+ * @emits annotation:cancel-pending - Cancel pending tag annotation. Payload: undefined
2504
+ * @emits annotation:create - Create new tag annotation. Payload: { motivation: 'tagging', selector: Selector | Selector[], body: Body[] }
2505
+ * @subscribes annotation:click - Annotation clicked. Payload: { annotationId: string }
2506
+ */
2507
+ declare function TaggingPanel({ annotations, annotateMode, isDetecting, detectionProgress, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: TaggingPanelProps): react_jsx_runtime.JSX.Element;
2416
2508
 
2417
- type Annotation$1 = components['schemas']['Annotation'];
2418
- type Motivation$1 = components['schemas']['Motivation'];
2509
+ type Annotation = components['schemas']['Annotation'];
2510
+ type Motivation = components['schemas']['Motivation'];
2419
2511
  type TabKey = 'statistics' | 'reference' | 'highlight' | 'assessment' | 'comment' | 'tag';
2420
- interface PendingAnnotation {
2512
+ interface PendingAnnotation$1 {
2421
2513
  selector: Selector | Selector[];
2422
- motivation: Motivation$1;
2514
+ motivation: Motivation;
2423
2515
  }
2424
2516
  /**
2425
- * Simplified UnifiedAnnotationsPanel using Annotator abstraction
2517
+ * Simplified UnifiedAnnotationsPanel using event-driven architecture
2426
2518
  *
2427
2519
  * Key simplifications:
2428
2520
  * - Single annotations array (grouped internally by motivation)
2429
2521
  * - Single focusedAnnotationId (motivation-agnostic)
2430
- * - Single hoveredAnnotationId (motivation-agnostic)
2431
- * - Single onCreateAnnotation handler (motivation-based dispatch)
2522
+ * - Hover state managed via event bus (no props needed)
2523
+ * - All operations managed via event bus (no callback props)
2432
2524
  */
2433
2525
  interface UnifiedAnnotationsPanelProps {
2434
- annotations: Annotation$1[];
2526
+ annotations: Annotation[];
2435
2527
  annotators: Record<string, Annotator>;
2436
- detectionContext?: {
2437
- client: any;
2438
- rUri: any;
2439
- setDetectingMotivation: (motivation: Motivation$1 | null) => void;
2440
- setMotivationDetectionProgress: (progress: any) => void;
2441
- detectionStreamRef: any;
2442
- cacheManager: any;
2443
- showSuccess: (message: string) => void;
2444
- showError: (message: string) => void;
2445
- };
2446
- focusedAnnotationId: string | null;
2447
- hoveredAnnotationId?: string | null;
2448
- onAnnotationClick: (annotation: Annotation$1) => void;
2449
- onAnnotationHover?: (annotationId: string | null) => void;
2450
- onCreateAnnotation: (motivation: Motivation$1, ...args: any[]) => void;
2451
2528
  annotateMode?: boolean;
2452
- detectingMotivation?: Motivation$1 | null;
2529
+ detectingMotivation?: Motivation | null;
2453
2530
  detectionProgress?: {
2454
2531
  status: string;
2455
2532
  percentage?: number;
@@ -2458,21 +2535,17 @@ interface UnifiedAnnotationsPanelProps {
2458
2535
  processedCategories?: number;
2459
2536
  totalCategories?: number;
2460
2537
  } | null;
2461
- pendingAnnotation: PendingAnnotation | null;
2538
+ pendingAnnotation: PendingAnnotation$1 | null;
2462
2539
  allEntityTypes?: string[];
2463
2540
  generatingReferenceId?: string | null;
2464
- onGenerateDocument?: (referenceId: string, options: {
2465
- title: string;
2466
- prompt?: string;
2467
- }) => void;
2468
- onCreateDocument?: (annotationUri: string, title: string, entityTypes: string[]) => void;
2469
- onSearchDocuments?: (referenceId: string, searchTerm: string) => void;
2470
- onCancelDetection?: () => void;
2471
- mediaType?: string;
2472
2541
  referencedBy?: any[];
2473
2542
  referencedByLoading?: boolean;
2474
2543
  resourceId?: string;
2475
2544
  initialTab?: TabKey;
2545
+ initialTabGeneration?: number;
2546
+ scrollToAnnotationId?: string | null;
2547
+ onScrollCompleted?: () => void;
2548
+ hoveredAnnotationId?: string | null;
2476
2549
  Link: React__default.ComponentType<LinkComponentProps>;
2477
2550
  routes: RouteBuilder;
2478
2551
  }
@@ -2514,6 +2587,57 @@ interface NavigationMenuProps {
2514
2587
  }
2515
2588
  declare function NavigationMenu({ Link, routes, t, isAdmin, isModerator, onItemClick, className, currentPath }: NavigationMenuProps): react_jsx_runtime.JSX.Element;
2516
2589
 
2590
+ /**
2591
+ * Props for ObservableLink component
2592
+ *
2593
+ * Accepts any props that a standard anchor element accepts,
2594
+ * plus optional navigation metadata for event emission.
2595
+ */
2596
+ interface ObservableLinkProps extends React__default.AnchorHTMLAttributes<HTMLAnchorElement> {
2597
+ /** The URL to navigate to */
2598
+ href: string;
2599
+ /** Optional label for the link (used in event metadata) */
2600
+ label?: string;
2601
+ /** Children to render inside the link */
2602
+ children: React__default.ReactNode;
2603
+ }
2604
+ /**
2605
+ * Link component that emits navigation events for observability
2606
+ *
2607
+ * Use this instead of Next.js <Link> when you want link clicks to be
2608
+ * observable through the NavigationEventBus. This is useful for:
2609
+ * - Analytics tracking
2610
+ * - State coordination before navigation
2611
+ * - Logging navigation flows
2612
+ *
2613
+ * The component emits 'navigation:link-clicked' event before allowing
2614
+ * the browser to follow the link.
2615
+ *
2616
+ * @example
2617
+ * ```typescript
2618
+ * <ObservableLink
2619
+ * href="/know/discover"
2620
+ * label="Discover"
2621
+ * >
2622
+ * Discover Resources
2623
+ * </ObservableLink>
2624
+ * ```
2625
+ *
2626
+ * @example With Next.js Link integration
2627
+ * ```typescript
2628
+ * import Link from 'next/link';
2629
+ *
2630
+ * <Link href="/know/discover" legacyBehavior passHref>
2631
+ * <ObservableLink label="Discover">
2632
+ * Discover Resources
2633
+ * </ObservableLink>
2634
+ * </Link>
2635
+ * ```
2636
+ *
2637
+ * @emits navigation:link-clicked - Link clicked by user. Payload: { href: string, label?: string }
2638
+ */
2639
+ declare function ObservableLink({ href, label, onClick, children, ...anchorProps }: ObservableLinkProps): react_jsx_runtime.JSX.Element;
2640
+
2517
2641
  interface SimpleNavigationItem$1 {
2518
2642
  name: string;
2519
2643
  href: string;
@@ -2529,7 +2653,6 @@ interface SimpleNavigationProps$1 {
2529
2653
  LinkComponent: React__default.ComponentType<any>;
2530
2654
  dropdownContent?: (onClose: () => void) => React__default.ReactNode;
2531
2655
  isCollapsed: boolean;
2532
- onToggleCollapse: () => void;
2533
2656
  icons: {
2534
2657
  chevronLeft: React__default.ComponentType<{
2535
2658
  className?: string;
@@ -2544,8 +2667,10 @@ interface SimpleNavigationProps$1 {
2544
2667
  /**
2545
2668
  * Simple navigation component for Admin and Moderation modes.
2546
2669
  * Renders a section header with optional dropdown and static navigation tabs.
2670
+ *
2671
+ * @emits navigation:sidebar-toggle - Toggle sidebar collapsed/expanded state. Payload: undefined
2547
2672
  */
2548
- declare function SimpleNavigation({ title, items, currentPath, LinkComponent, dropdownContent, isCollapsed, onToggleCollapse, icons, collapseSidebarLabel, expandSidebarLabel }: SimpleNavigationProps$1): react_jsx_runtime.JSX.Element;
2673
+ declare function SimpleNavigation({ title, items, currentPath, LinkComponent, dropdownContent, isCollapsed, icons, collapseSidebarLabel, expandSidebarLabel }: SimpleNavigationProps$1): react_jsx_runtime.JSX.Element;
2549
2674
 
2550
2675
  /**
2551
2676
  * Represents an open resource/document in the navigation
@@ -2592,10 +2717,6 @@ interface CollapsibleResourceNavigationProps {
2592
2717
  }>;
2593
2718
  resources: OpenResource[];
2594
2719
  isCollapsed: boolean;
2595
- onToggleCollapse: () => void;
2596
- onResourceClose: (id: string) => void;
2597
- onResourceReorder: (oldIndex: number, newIndex: number) => void;
2598
- onResourceSelect?: (id: string) => void;
2599
2720
  currentPath: string;
2600
2721
  LinkComponent: ComponentType<any>;
2601
2722
  onNavigate?: (path: string) => void;
@@ -2622,8 +2743,12 @@ interface CollapsibleResourceNavigationProps {
2622
2743
  * A comprehensive collapsible navigation component with fixed items and dynamic resource tabs.
2623
2744
  * Supports drag and drop for resource reordering when expanded.
2624
2745
  * Platform-agnostic design for use across different React environments.
2746
+ *
2747
+ * @emits navigation:resource-reorder - Resource tab reordered. Payload: { oldIndex: number, newIndex: number }
2748
+ * @emits navigation:resource-close - Resource tab closed. Payload: { resourceId: string }
2749
+ * @emits navigation:sidebar-toggle - Toggle sidebar collapsed/expanded state. Payload: undefined
2625
2750
  */
2626
- declare function CollapsibleResourceNavigation({ fixedItems, resources, isCollapsed, onToggleCollapse, onResourceClose, onResourceReorder, currentPath, LinkComponent, onNavigate, getResourceHref, className, translations, icons, navigationMenu }: CollapsibleResourceNavigationProps): react_jsx_runtime.JSX.Element;
2751
+ declare function CollapsibleResourceNavigation({ fixedItems, resources, isCollapsed, currentPath, LinkComponent, onNavigate, getResourceHref, className, translations, icons, navigationMenu }: CollapsibleResourceNavigationProps): react_jsx_runtime.JSX.Element;
2627
2752
 
2628
2753
  /**
2629
2754
  * A sortable tab for an open resource in the navigation sidebar.
@@ -3126,11 +3251,8 @@ interface DevOpsFeature {
3126
3251
  interface AdminDevOpsPageProps {
3127
3252
  suggestedFeatures: DevOpsFeature[];
3128
3253
  theme: 'light' | 'dark' | 'system';
3129
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
3130
3254
  showLineNumbers: boolean;
3131
- onLineNumbersToggle: () => void;
3132
3255
  activePanel: string | null;
3133
- onPanelToggle: (panel: string | null) => void;
3134
3256
  translations: {
3135
3257
  title: string;
3136
3258
  subtitle: string;
@@ -3144,7 +3266,7 @@ interface AdminDevOpsPageProps {
3144
3266
  ToolbarPanels: React__default.ComponentType<any>;
3145
3267
  Toolbar: React__default.ComponentType<any>;
3146
3268
  }
3147
- declare function AdminDevOpsPage({ suggestedFeatures, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): react_jsx_runtime.JSX.Element;
3269
+ declare function AdminDevOpsPage({ suggestedFeatures, theme, showLineNumbers, activePanel, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): react_jsx_runtime.JSX.Element;
3148
3270
 
3149
3271
  interface OAuthProvider {
3150
3272
  name: string;
@@ -3155,11 +3277,8 @@ interface AdminSecurityPageProps {
3155
3277
  allowedDomains: string[];
3156
3278
  isLoading: boolean;
3157
3279
  theme: 'light' | 'dark' | 'system';
3158
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
3159
3280
  showLineNumbers: boolean;
3160
- onLineNumbersToggle: () => void;
3161
3281
  activePanel: string | null;
3162
- onPanelToggle: (panel: string | null) => void;
3163
3282
  translations: {
3164
3283
  title: string;
3165
3284
  subtitle: string;
@@ -3182,7 +3301,7 @@ interface AdminSecurityPageProps {
3182
3301
  ToolbarPanels: React__default.ComponentType<any>;
3183
3302
  Toolbar: React__default.ComponentType<any>;
3184
3303
  }
3185
- declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): react_jsx_runtime.JSX.Element;
3304
+ declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): react_jsx_runtime.JSX.Element;
3186
3305
 
3187
3306
  interface AdminUser {
3188
3307
  id: string;
@@ -3213,11 +3332,8 @@ interface AdminUsersPageProps {
3213
3332
  onAddUser: () => void;
3214
3333
  onExportUsers: () => void;
3215
3334
  theme: 'light' | 'dark' | 'system';
3216
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
3217
3335
  showLineNumbers: boolean;
3218
- onLineNumbersToggle: () => void;
3219
3336
  activePanel: string | null;
3220
- onPanelToggle: (panel: string | null) => void;
3221
3337
  translations: {
3222
3338
  title: string;
3223
3339
  subtitle: string;
@@ -3266,7 +3382,7 @@ interface AdminUsersPageProps {
3266
3382
  };
3267
3383
  };
3268
3384
  }
3269
- declare function AdminUsersPage({ users, userStats, isLoadingUsers, isLoadingStats, onUpdateUser, onDeleteUser, onAddUser, onExportUsers, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, translations: t, ToolbarPanels, Toolbar, buttonStyles, }: AdminUsersPageProps): react_jsx_runtime.JSX.Element;
3385
+ 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;
3270
3386
 
3271
3387
  interface SignInFormProps {
3272
3388
  /**
@@ -3446,11 +3562,8 @@ interface EntityTagsPageProps {
3446
3562
  onAddTag: () => void;
3447
3563
  isAddingTag: boolean;
3448
3564
  theme: 'light' | 'dark' | 'system';
3449
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
3450
3565
  showLineNumbers: boolean;
3451
- onLineNumbersToggle: () => void;
3452
3566
  activePanel: string | null;
3453
- onPanelToggle: (panel: string | null) => void;
3454
3567
  translations: {
3455
3568
  pageTitle: string;
3456
3569
  pageDescription: string;
@@ -3463,17 +3576,14 @@ interface EntityTagsPageProps {
3463
3576
  ToolbarPanels: React__default.ComponentType<any>;
3464
3577
  Toolbar: React__default.ComponentType<any>;
3465
3578
  }
3466
- declare function EntityTagsPage({ entityTypes, error, newTag, onNewTagChange, onAddTag, isAddingTag, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, translations: t, ToolbarPanels, Toolbar, }: EntityTagsPageProps): react_jsx_runtime.JSX.Element;
3579
+ declare function EntityTagsPage({ entityTypes, error, newTag, onNewTagChange, onAddTag, isAddingTag, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: EntityTagsPageProps): react_jsx_runtime.JSX.Element;
3467
3580
 
3468
3581
  interface RecentDocumentsPageProps {
3469
3582
  hasDocuments: boolean;
3470
3583
  isLoading: boolean;
3471
3584
  theme: 'light' | 'dark' | 'system';
3472
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
3473
3585
  showLineNumbers: boolean;
3474
- onLineNumbersToggle: () => void;
3475
3586
  activePanel: string | null;
3476
- onPanelToggle: (panel: string | null) => void;
3477
3587
  translations: {
3478
3588
  pageTitle: string;
3479
3589
  pageDescription: string;
@@ -3486,17 +3596,14 @@ interface RecentDocumentsPageProps {
3486
3596
  ToolbarPanels: React__default.ComponentType<any>;
3487
3597
  Toolbar: React__default.ComponentType<any>;
3488
3598
  }
3489
- declare function RecentDocumentsPage({ isLoading, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, translations: t, ToolbarPanels, Toolbar, }: RecentDocumentsPageProps): react_jsx_runtime.JSX.Element;
3599
+ declare function RecentDocumentsPage({ isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: RecentDocumentsPageProps): react_jsx_runtime.JSX.Element;
3490
3600
 
3491
3601
  interface TagSchemasPageProps {
3492
3602
  schemas: TagSchema[];
3493
3603
  isLoading: boolean;
3494
3604
  theme: 'light' | 'dark' | 'system';
3495
- onThemeChange: (theme: 'light' | 'dark' | 'system') => void;
3496
3605
  showLineNumbers: boolean;
3497
- onLineNumbersToggle: () => void;
3498
3606
  activePanel: string | null;
3499
- onPanelToggle: (panel: string | null) => void;
3500
3607
  translations: {
3501
3608
  pageTitle: string;
3502
3609
  pageDescription: string;
@@ -3506,7 +3613,7 @@ interface TagSchemasPageProps {
3506
3613
  ToolbarPanels: React__default.ComponentType<any>;
3507
3614
  Toolbar: React__default.ComponentType<any>;
3508
3615
  }
3509
- declare function TagSchemasPage({ schemas, isLoading, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): react_jsx_runtime.JSX.Element;
3616
+ declare function TagSchemasPage({ schemas, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): react_jsx_runtime.JSX.Element;
3510
3617
 
3511
3618
  type ResourceDescriptor$2 = components['schemas']['ResourceDescriptor'];
3512
3619
  interface ResourceComposePageProps {
@@ -3524,11 +3631,8 @@ interface ResourceComposePageProps {
3524
3631
  availableEntityTypes: string[];
3525
3632
  initialLocale: string;
3526
3633
  theme: 'light' | 'dark';
3527
- onThemeChange: (theme: 'light' | 'dark') => void;
3528
3634
  showLineNumbers: boolean;
3529
- onLineNumbersToggle: () => void;
3530
3635
  activePanel: string | null;
3531
- onPanelToggle: (panel: string) => void;
3532
3636
  onSaveResource: (params: SaveResourceParams) => Promise<void>;
3533
3637
  onCancel: () => void;
3534
3638
  translations: {
@@ -3580,7 +3684,7 @@ interface SaveResourceParams {
3580
3684
  annotationUri?: string;
3581
3685
  sourceDocumentId?: string;
3582
3686
  }
3583
- declare function ResourceComposePage({ mode, cloneData, referenceData, availableEntityTypes, initialLocale, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, onSaveResource, onCancel, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): react_jsx_runtime.JSX.Element;
3687
+ declare function ResourceComposePage({ mode, cloneData, referenceData, availableEntityTypes, initialLocale, theme, showLineNumbers, activePanel, onSaveResource, onCancel, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): react_jsx_runtime.JSX.Element;
3584
3688
 
3585
3689
  type ResourceDescriptor$1 = components['schemas']['ResourceDescriptor'];
3586
3690
  interface ResourceDiscoveryPageProps {
@@ -3590,11 +3694,8 @@ interface ResourceDiscoveryPageProps {
3590
3694
  isLoadingRecent: boolean;
3591
3695
  isSearching: boolean;
3592
3696
  theme: 'light' | 'dark';
3593
- onThemeChange: (theme: 'light' | 'dark') => void;
3594
3697
  showLineNumbers: boolean;
3595
- onLineNumbersToggle: () => void;
3596
3698
  activePanel: string | null;
3597
- onPanelToggle: (panel: string) => void;
3598
3699
  onNavigateToResource: (resourceId: string) => void;
3599
3700
  onNavigateToCompose: () => void;
3600
3701
  translations: {
@@ -3617,7 +3718,7 @@ interface ResourceDiscoveryPageProps {
3617
3718
  };
3618
3719
  ToolbarPanels: React__default.ComponentType<any>;
3619
3720
  }
3620
- declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, isSearching, theme, onThemeChange, showLineNumbers, onLineNumbersToggle, activePanel, onPanelToggle, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): react_jsx_runtime.JSX.Element;
3721
+ declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, isSearching, theme, showLineNumbers, activePanel, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): react_jsx_runtime.JSX.Element;
3621
3722
 
3622
3723
  type ResourceDescriptor = components['schemas']['ResourceDescriptor'];
3623
3724
  interface ResourceCardProps {
@@ -3630,8 +3731,6 @@ interface ResourceCardProps {
3630
3731
  declare const ResourceCard: React__default.MemoExoticComponent<({ resource, onOpen, tabIndex, archivedLabel, createdLabel }: ResourceCardProps) => react_jsx_runtime.JSX.Element>;
3631
3732
 
3632
3733
  type SemiontResource = components['schemas']['ResourceDescriptor'];
3633
- type Annotation = components['schemas']['Annotation'];
3634
- type Motivation = components['schemas']['Motivation'];
3635
3734
  interface ResourceViewerPageProps {
3636
3735
  /**
3637
3736
  * The resource to display
@@ -3641,76 +3740,14 @@ interface ResourceViewerPageProps {
3641
3740
  * Resource URI
3642
3741
  */
3643
3742
  rUri: ResourceUri;
3644
- /**
3645
- * Document content (already loaded)
3646
- */
3647
- content: string;
3648
- /**
3649
- * Whether content is still loading
3650
- */
3651
- contentLoading: boolean;
3652
- /**
3653
- * All annotations for this resource
3654
- */
3655
- annotations: Annotation[];
3656
- /**
3657
- * Resources that reference this resource
3658
- */
3659
- referencedBy: any[];
3660
- /**
3661
- * Whether referencedBy is loading
3662
- */
3663
- referencedByLoading: boolean;
3664
- /**
3665
- * All available entity types
3666
- */
3667
- allEntityTypes: string[];
3668
3743
  /**
3669
3744
  * Current locale
3670
3745
  */
3671
3746
  locale: string;
3672
- /**
3673
- * Theme state
3674
- */
3675
- theme: any;
3676
- onThemeChange: (theme: any) => void;
3677
- /**
3678
- * Line numbers state
3679
- */
3680
- showLineNumbers: boolean;
3681
- onLineNumbersToggle: () => void;
3682
- /**
3683
- * Active toolbar panel
3684
- */
3685
- activePanel: any;
3686
- onPanelToggle: (panel: any) => void;
3687
- setActivePanel: (panel: any) => void;
3688
- /**
3689
- * Callbacks for resource actions
3690
- */
3691
- onArchive: () => Promise<void>;
3692
- onUnarchive: () => Promise<void>;
3693
- onClone: () => Promise<void>;
3694
- onUpdateAnnotationBody: (annotationUri: string, data: any) => Promise<void>;
3695
- /**
3696
- * Annotation CRUD callbacks
3697
- */
3698
- onCreateAnnotation: (rUri: ResourceUri, motivation: Motivation, selector: any, body: any[]) => Promise<void>;
3699
- onTriggerSparkleAnimation: (annotationId: string) => void;
3700
- onClearNewAnnotationId: (annotationId: string) => void;
3701
- /**
3702
- * Toast notifications
3703
- */
3704
- showSuccess: (message: string) => void;
3705
- showError: (message: string) => void;
3706
3747
  /**
3707
3748
  * Cache manager for detection
3708
3749
  */
3709
3750
  cacheManager: any;
3710
- /**
3711
- * API client
3712
- */
3713
- client: any;
3714
3751
  /**
3715
3752
  * Link component for routing
3716
3753
  */
@@ -3720,12 +3757,149 @@ interface ResourceViewerPageProps {
3720
3757
  */
3721
3758
  routes: any;
3722
3759
  /**
3723
- * Component dependencies - passed from frontend
3760
+ * Component dependencies - passed from framework layer
3724
3761
  */
3725
3762
  ToolbarPanels: React__default.ComponentType<any>;
3726
3763
  SearchResourcesModal: React__default.ComponentType<any>;
3727
3764
  GenerationConfigModal: React__default.ComponentType<any>;
3765
+ /**
3766
+ * Callback to refetch document from parent
3767
+ */
3768
+ refetchDocument: () => Promise<unknown>;
3769
+ }
3770
+ /**
3771
+ * ResourceViewerPage - Main component
3772
+ *
3773
+ * Uses hooks directly (NO containers, NO render props, NO ResourceViewerPageContent wrapper)
3774
+ */
3775
+ declare function ResourceViewerPage({ resource, rUri, locale, cacheManager, Link, routes, ToolbarPanels, SearchResourcesModal, GenerationConfigModal, refetchDocument, }: ResourceViewerPageProps): react_jsx_runtime.JSX.Element;
3776
+
3777
+ /**
3778
+ * useDetectionFlow - Detection state management hook
3779
+ *
3780
+ * Manages detection flow state and event subscriptions:
3781
+ * - Tracking currently detecting motivation
3782
+ * - Detection progress updates from SSE
3783
+ * - Detection lifecycle (start, progress, complete, failed)
3784
+ * - Auto-dismiss progress after completion (5 seconds)
3785
+ * - Manual dismiss via detection:dismiss-progress event
3786
+ *
3787
+ * Follows react-rxjs-guide.md Layer 2 pattern: Hook bridge that
3788
+ * subscribes to events and pushes values into React state.
3789
+ */
3790
+
3791
+ interface DetectionFlowState {
3792
+ detectingMotivation: Motivation$9 | null;
3793
+ detectionProgress: DetectionProgress | null;
3794
+ detectionStreamRef: React.MutableRefObject<any>;
3795
+ }
3796
+ /**
3797
+ * Hook for detection flow state management
3798
+ *
3799
+ * @param rUri - Resource URI being detected
3800
+ * @returns Detection state and stream ref
3801
+ */
3802
+ declare function useDetectionFlow(rUri: ResourceUri): DetectionFlowState;
3803
+
3804
+ /**
3805
+ * usePanelNavigation - Panel navigation and scroll coordination hook
3806
+ *
3807
+ * Manages sidebar panel state:
3808
+ * - Active panel tracking (which panel is open)
3809
+ * - Scroll coordination (scrollToAnnotationId)
3810
+ * - Panel routing with initial tab
3811
+ * - LocalStorage persistence
3812
+ *
3813
+ * Follows react-rxjs-guide.md Layer 2 pattern: Hook bridge that
3814
+ * subscribes to events and pushes values into React state.
3815
+ */
3816
+ interface PanelNavigationState {
3817
+ activePanel: string | null;
3818
+ scrollToAnnotationId: string | null;
3819
+ panelInitialTab: {
3820
+ tab: string;
3821
+ generation: number;
3822
+ } | null;
3823
+ onScrollCompleted: () => void;
3824
+ }
3825
+ /**
3826
+ * Hook for panel navigation state management
3827
+ *
3828
+ * @returns Panel navigation state
3829
+ */
3830
+ declare function usePanelNavigation(): PanelNavigationState;
3831
+
3832
+ /**
3833
+ * useAnnotationFlow - Annotation creation flow hook
3834
+ *
3835
+ * Manages annotation creation and interaction:
3836
+ * - Pending annotation state (user selected text, waiting for confirmation)
3837
+ * - Selection events → pending annotation conversion
3838
+ * - Annotation interaction (hover, click, delete)
3839
+ * - Annotation request routing to appropriate panel
3840
+ *
3841
+ * Follows react-rxjs-guide.md Layer 2 pattern: Hook bridge that
3842
+ * subscribes to events and pushes values into React state.
3843
+ */
3844
+
3845
+ interface PendingAnnotation {
3846
+ selector: Selector | Selector[];
3847
+ motivation: Motivation$9;
3848
+ }
3849
+ interface AnnotationFlowState {
3850
+ pendingAnnotation: PendingAnnotation | null;
3851
+ hoveredAnnotationId: string | null;
3852
+ }
3853
+ /**
3854
+ * Hook for annotation creation and interaction flow
3855
+ *
3856
+ * @param rUri - Resource URI
3857
+ * @returns Annotation flow state
3858
+ */
3859
+ declare function useAnnotationFlow(rUri: ResourceUri): AnnotationFlowState;
3860
+
3861
+ /**
3862
+ * useGenerationFlow - Document generation flow hook
3863
+ *
3864
+ * Manages document generation state:
3865
+ * - Generation progress tracking (from useGenerationProgress hook)
3866
+ * - Generation modal state
3867
+ * - Reference search modal state
3868
+ * - Generation completion/error handling
3869
+ *
3870
+ * Follows react-rxjs-guide.md Layer 2 pattern: Hook bridge that
3871
+ * subscribes to events and pushes values into React state.
3872
+ */
3873
+
3874
+ interface GenerationFlowState {
3875
+ generationProgress: any | null;
3876
+ generationModalOpen: boolean;
3877
+ generationReferenceId: string | null;
3878
+ generationDefaultTitle: string;
3879
+ searchModalOpen: boolean;
3880
+ pendingReferenceId: string | null;
3881
+ onGenerateDocument: (referenceId: string, options: {
3882
+ title: string;
3883
+ prompt?: string;
3884
+ language?: string;
3885
+ temperature?: number;
3886
+ maxTokens?: number;
3887
+ context?: GenerationContext;
3888
+ }) => void;
3889
+ onCloseGenerationModal: () => void;
3890
+ onCloseSearchModal: () => void;
3728
3891
  }
3729
- declare function ResourceViewerPage(props: ResourceViewerPageProps): react_jsx_runtime.JSX.Element;
3892
+ /**
3893
+ * Hook for document generation flow
3894
+ *
3895
+ * @param locale - Current locale for language defaults
3896
+ * @param resourceId - Resource ID for generation
3897
+ * @param showSuccess - Success toast callback
3898
+ * @param showError - Error toast callback
3899
+ * @param cacheManager - Cache manager for invalidation
3900
+ * @param clearNewAnnotationId - Clear animation callback
3901
+ * @returns Generation flow state
3902
+ */
3903
+ declare function useGenerationFlow(locale: string, resourceId: string, showSuccess: (message: string) => void, showError: (message: string) => void, cacheManager: any, clearNewAnnotationId: (annotationId: AnnotationUri) => void): GenerationFlowState;
3730
3904
 
3731
- export { ANNOTATORS, AUTH_EVENTS, AVAILABLE_LOCALES, AdminDevOpsPage, type AdminDevOpsPageProps, AdminSecurityPage, type AdminSecurityPageProps, type AdminUser, type AdminUserStats, AdminUsersPage, type AdminUsersPageProps, AnnotateToolbar, AnnotateView, type Annotation$n as Annotation, type AnnotationConfig, type AnnotationCreationHandler, type AnnotationHandlers, AnnotationHistory, type AnnotationManager, AnnotationOverlay, AnnotationProvider, type AnnotationProviderProps, AnnotationUIProvider, type AnnotationUIProviderProps, type AnnotationUIState, type AnnotationsCollection, type Annotator, ApiClientManager, ApiClientProvider, type ApiClientProviderProps, AssessmentEntry, AssessmentPanel, AsyncErrorBoundary, AuthErrorDisplay, type AuthErrorDisplayProps, type AuthEventDetail, type AuthEventType, type AvailableLocale, type BorderRadiusToken, BrowseView, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type CacheManager, CacheProvider, type CacheProviderProps, type ClickAction, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, type CollapsibleResourceNavigationProps, type ColorToken, CommentEntry, CommentsPanel, ComposeLoadingState, type ComposeLoadingStateProps, type CreateAnnotationParams, type CreateConfig, type DeleteAnnotationParams, DetectSection, type DetectionConfig, type DetectionProgress, DetectionProgressWidget, type DevOpsFeature, type DrawingMode, EntityTagsPage, type EntityTagsPageProps, EntityTypeBadges, ErrorBoundary, Footer, type GenerationOptions, type GenerationProgress, HighlightEntry, HighlightPanel, HistoryEvent, ImageURLSchema, ImageViewer, JsonLdPanel, JsonLdView, type KeyboardShortcut, KeyboardShortcutsHelpModal, LeftSidebar, type LinkComponentProps, LiveRegionProvider, MakeMeaningEventBusProvider, type MakeMeaningEventBusProviderProps, type Motivation$b as Motivation, type NavigationItem, NavigationMenu, type NavigationMenuHelper, type NavigationProps, type OAuthProvider, type OAuthUser, OAuthUserSchema, type OpenResource, OpenResourcesManager, OpenResourcesProvider, PageLayout, PanelHeader, PopupContainer, PopupHeader, type PreparedAnnotation, ProposeEntitiesModal, QUERY_KEYS, RecentDocumentsPage, type RecentDocumentsPageProps, ReferenceEntry, ReferenceResolutionWidget, ReferencesPanel, ResizeHandle, type ResolvedTheme, ResourceAnnotationsProvider, ResourceCard, type ResourceCardProps, ResourceComposePage, type ResourceComposePageProps, ResourceDiscoveryPage, type ResourceDiscoveryPageProps, ResourceErrorState, type ResourceErrorStateProps, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, type ResourceSearchModalProps, ResourceTagsInline, ResourceViewer, ResourceViewerPage, type ResourceViewerPageProps, type RouteBuilder, type SaveResourceParams, SearchModal, type SearchModalProps, SelectedTextDisplay, type SelectionData, type SelectionMotivation, type SelectorType, SemiontBranding, SemiontFavicon, type SemiontResource$3 as SemiontResource, SessionExpiryBanner, SessionManager, SessionProvider, SessionTimer, SettingsPanel, type ShadowToken, type ShapeType, SignInForm, type SignInFormProps, SignUpForm, type SignUpFormProps, SimpleNavigation, type SimpleNavigationItem, type SimpleNavigationProps, SkipLinks, SortableResourceTab, type SortableResourceTabProps, type SpacingToken, StatisticsPanel, StatusDisplay, type StreamStatus, SvgDrawingCanvas, TagEntry, TagSchemasPage, type TagSchemasPageProps, TaggingPanel, type TextSegment, type TextSelection, type Theme, ToastContainer, type ToastMessage, ToastProvider, type ToastType, Toolbar, type ToolbarPanelType, type TransitionToken, TranslationManager, TranslationProvider, type TranslationProviderProps, type TypographyToken, type UICreateAnnotationParams, UnifiedAnnotationsPanel, UnifiedHeader, UserMenuSkeleton, WelcomePage, type WelcomePageProps, buttonStyles, createCancelDetectionHandler, createDetectionHandler, cssVariables, dispatch401Error, dispatch403Error, dispatchAuthEvent, faviconPaths, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, onAuthEvent, rehypeRenderAnnotations, remarkAnnotations, sanitizeImageURL, saveSelectedShapeForSelectorType, supportsDetection, tokens, useAdmin, useAnnotationManager, useAnnotationPanel, useAnnotationUI, useAnnotations, useApiClient, useAuthApi, useCacheManager, useDebounce, useDebouncedCallback, useDetectionProgress, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEntityTypes, useFormAnnouncements, useFormValidation, useFormattedTime, useGenerationProgress, useHealth, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMakeMeaningEvents, useOpenResources, usePanelWidth, usePreloadTranslations, useResourceAnnotations, useResourceEvents, useResourceLoadingAnnouncements, useResources, useRovingTabIndex, useSearchAnnouncements, useSessionContext, useSessionExpiry, useTheme, useToast, useToolbar, useTranslations, validationRules };
3905
+ export { ANNOTATORS, AUTH_EVENTS, AVAILABLE_LOCALES, AdminDevOpsPage, type AdminDevOpsPageProps, AdminSecurityPage, type AdminSecurityPageProps, type AdminUser, type AdminUserStats, AdminUsersPage, type AdminUsersPageProps, AnnotateToolbar, AnnotateView, type Annotation$k as Annotation, type AnnotationConfig, type AnnotationCreationHandler, type AnnotationFlowState, type AnnotationHandlers, AnnotationHistory, type AnnotationManager, AnnotationOverlay, AnnotationProvider, type AnnotationProviderProps, AnnotationUIProvider, type AnnotationUIProviderProps, type AnnotationUIState, type AnnotationsCollection, type Annotator, ApiClientProvider, type ApiClientProviderProps, AssessmentEntry, AssessmentPanel, AsyncErrorBoundary, AuthErrorDisplay, type AuthErrorDisplayProps, type AuthEventDetail, type AuthEventType, AuthTokenProvider, type AuthTokenProviderProps, type AvailableLocale, type BorderRadiusToken, BrowseView, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type CacheManager, CacheProvider, type CacheProviderProps, type ClickAction, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, type CollapsibleResourceNavigationProps, type ColorToken, CommentEntry, CommentsPanel, ComposeLoadingState, type ComposeLoadingStateProps, type CreateAnnotationParams, type CreateConfig, type DeleteAnnotationParams, DetectSection, type DetectionConfig, type DetectionFlowState, type DetectionProgress, DetectionProgressWidget, type DevOpsFeature, type DrawingMode, EntityTagsPage, type EntityTagsPageProps, EntityTypeBadges, ErrorBoundary, EventBus, EventMap, type EventOperationsConfig, Footer, type GenerationFlowState, type GenerationOptions, type GenerationProgress, HighlightEntry, HighlightPanel, HistoryEvent, ImageURLSchema, ImageViewer, JsonLdPanel, JsonLdView, type KeyboardShortcut, KeyboardShortcutsHelpModal, LeftSidebar, type LinkComponentProps, LiveRegionProvider, type Motivation$8 as Motivation, type NavigationItem, NavigationMenu, type NavigationMenuHelper, type NavigationProps, type OAuthProvider, type OAuthUser, OAuthUserSchema, ObservableLink, type ObservableLinkProps, type OpenResource, OpenResourcesManager, OpenResourcesProvider, PageLayout, PanelHeader, type PanelNavigationState, PopupContainer, PopupHeader, type PreparedAnnotation, ProposeEntitiesModal, QUERY_KEYS, RecentDocumentsPage, type RecentDocumentsPageProps, ReferenceEntry, ReferenceResolutionWidget, ReferencesPanel, ResizeHandle, type ResolvedTheme, ResourceAnnotationsProvider, ResourceCard, type ResourceCardProps, ResourceComposePage, type ResourceComposePageProps, ResourceDiscoveryPage, type ResourceDiscoveryPageProps, ResourceErrorState, type ResourceErrorStateProps, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, type ResourceSearchModalProps, ResourceTagsInline, ResourceViewer, ResourceViewerPage, type ResourceViewerPageProps, type RouteBuilder, type SaveResourceParams, SearchModal, type SearchModalProps, SelectedTextDisplay, type SelectionMotivation, type SelectorType, SemiontBranding, SemiontFavicon, type SemiontResource$4 as SemiontResource, SessionExpiryBanner, SessionManager, SessionProvider, SessionTimer, SettingsPanel, type ShadowToken, type ShapeType, SignInForm, type SignInFormProps, SignUpForm, type SignUpFormProps, SimpleNavigation, type SimpleNavigationItem, type SimpleNavigationProps, SkipLinks, SortableResourceTab, type SortableResourceTabProps, type SpacingToken, StatisticsPanel, StatusDisplay, type StreamStatus, SvgDrawingCanvas, TagEntry, TagSchemasPage, type TagSchemasPageProps, TaggingPanel, type TextSegment, type TextSelection, type Theme, ToastContainer, type ToastMessage, ToastProvider, type ToastType, Toolbar, type ToolbarPanelType, type TransitionToken, TranslationManager, TranslationProvider, type TranslationProviderProps, type TypographyToken, type UICreateAnnotationParams, UnifiedAnnotationsPanel, UnifiedHeader, type UseResourceContentResult, UserMenuSkeleton, WelcomePage, type WelcomePageProps, buttonStyles, createCancelDetectionHandler, createDetectionHandler, cssVariables, dispatch401Error, dispatch403Error, dispatchAuthEvent, faviconPaths, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, onAuthEvent, rehypeRenderAnnotations, remarkAnnotations, sanitizeImageURL, saveSelectedShapeForSelectorType, supportsDetection, tokens, useAdmin, useAnnotationFlow, useAnnotationManager, useAnnotationUI, useAnnotations, useApiClient, useAuthApi, useAuthToken, useCacheManager, useDebounce, useDebouncedCallback, useDetectionFlow, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEntityTypes, useEventOperations, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useFormValidation, useFormattedTime, useGenerationFlow, useGenerationProgress, useHealth, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useObservableExternalNavigation, useObservableRouter, useOpenResources, usePanelNavigation, usePanelWidth, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceEvents, useResourceLoadingAnnouncements, useResources, useRovingTabIndex, useSearchAnnouncements, useSessionContext, useSessionExpiry, useTheme, useToast, useToolbar, useTranslations, validationRules };