@semiont/react-ui 0.5.22 → 0.5.24

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 (197) hide show
  1. package/dist/{ar-ZHKO4XDR.js → ar-JRTKCMTF.js} +11 -4
  2. package/dist/ar-JRTKCMTF.js.map +1 -0
  3. package/dist/{bn-3BUDKAK5.js → bn-LO6EDSCC.js} +11 -4
  4. package/dist/bn-LO6EDSCC.js.map +1 -0
  5. package/dist/{chunk-PFUXQPWJ.js → chunk-4QMTEPQ3.js} +92 -60
  6. package/dist/chunk-4QMTEPQ3.js.map +1 -0
  7. package/dist/{chunk-R52YAGHK.js → chunk-5Y5JDCKC.js} +11 -4
  8. package/dist/chunk-5Y5JDCKC.js.map +1 -0
  9. package/dist/{cs-2EFEUKTW.js → cs-LCHHOR4O.js} +11 -4
  10. package/dist/cs-LCHHOR4O.js.map +1 -0
  11. package/dist/{da-SUD3Q44Q.js → da-TARGPMJR.js} +11 -4
  12. package/dist/da-TARGPMJR.js.map +1 -0
  13. package/dist/{de-6IC5QRX7.js → de-SBH4QBPJ.js} +11 -4
  14. package/dist/de-SBH4QBPJ.js.map +1 -0
  15. package/dist/{el-Q4NAXFRC.js → el-2D2OLGWB.js} +11 -4
  16. package/dist/el-2D2OLGWB.js.map +1 -0
  17. package/dist/{en-P2L4X27N.js → en-QFIEG3CA.js} +2 -2
  18. package/dist/{es-YUKZBD4W.js → es-U6YK2LX6.js} +11 -4
  19. package/dist/es-U6YK2LX6.js.map +1 -0
  20. package/dist/{fa-OJ47LILE.js → fa-S7SZE37M.js} +11 -4
  21. package/dist/fa-S7SZE37M.js.map +1 -0
  22. package/dist/{fi-QFFL5CUB.js → fi-CBL3NIXN.js} +11 -4
  23. package/dist/fi-CBL3NIXN.js.map +1 -0
  24. package/dist/{fr-BOQZZWP4.js → fr-EABUHV6S.js} +11 -4
  25. package/dist/fr-EABUHV6S.js.map +1 -0
  26. package/dist/{he-LXDY3TFA.js → he-THWD244Y.js} +11 -4
  27. package/dist/he-THWD244Y.js.map +1 -0
  28. package/dist/{hi-HOJER77V.js → hi-GHGFZJ44.js} +11 -4
  29. package/dist/hi-GHGFZJ44.js.map +1 -0
  30. package/dist/{id-I5WQ6EWD.js → id-POZOUMDW.js} +11 -4
  31. package/dist/id-POZOUMDW.js.map +1 -0
  32. package/dist/index.d.ts +269 -69
  33. package/dist/index.js +2080 -1861
  34. package/dist/index.js.map +1 -1
  35. package/dist/{it-UYH642IJ.js → it-KDYJADSH.js} +11 -4
  36. package/dist/it-KDYJADSH.js.map +1 -0
  37. package/dist/{ja-JTVWAC4L.js → ja-Z5Z6ZF3P.js} +11 -4
  38. package/dist/ja-Z5Z6ZF3P.js.map +1 -0
  39. package/dist/{ko-IHXFMOIZ.js → ko-7X3XUXRN.js} +11 -4
  40. package/dist/ko-7X3XUXRN.js.map +1 -0
  41. package/dist/{ms-JH25VFLO.js → ms-BTWEIW43.js} +11 -4
  42. package/dist/ms-BTWEIW43.js.map +1 -0
  43. package/dist/{nl-SURXW7IQ.js → nl-IS2CGF5I.js} +11 -4
  44. package/dist/nl-IS2CGF5I.js.map +1 -0
  45. package/dist/{no-HXIKQFDZ.js → no-AAMEVA26.js} +11 -4
  46. package/dist/no-AAMEVA26.js.map +1 -0
  47. package/dist/{pl-7A4KU6XK.js → pl-PVXUQYFT.js} +11 -4
  48. package/dist/pl-PVXUQYFT.js.map +1 -0
  49. package/dist/{pt-6MGYP7Q5.js → pt-3ITQ76TL.js} +11 -4
  50. package/dist/pt-3ITQ76TL.js.map +1 -0
  51. package/dist/{ro-IROCHNIA.js → ro-FRB4IIVS.js} +11 -4
  52. package/dist/ro-FRB4IIVS.js.map +1 -0
  53. package/dist/{sv-WDJD75CV.js → sv-DS3RO24M.js} +11 -4
  54. package/dist/sv-DS3RO24M.js.map +1 -0
  55. package/dist/test-utils.js +9 -3
  56. package/dist/test-utils.js.map +1 -1
  57. package/dist/{th-RIO2E6B3.js → th-AX66MWWB.js} +11 -4
  58. package/dist/th-AX66MWWB.js.map +1 -0
  59. package/dist/{tr-TZ7ERCIN.js → tr-7KTB67TT.js} +11 -4
  60. package/dist/tr-7KTB67TT.js.map +1 -0
  61. package/dist/{uk-ZFWDKLUE.js → uk-SMQS2MAQ.js} +11 -4
  62. package/dist/uk-SMQS2MAQ.js.map +1 -0
  63. package/dist/{vi-UIOSP2JG.js → vi-D3JXL2EZ.js} +11 -4
  64. package/dist/vi-D3JXL2EZ.js.map +1 -0
  65. package/dist/{zh-6R6YUY46.js → zh-S754AWFS.js} +11 -4
  66. package/dist/zh-S754AWFS.js.map +1 -0
  67. package/package.json +4 -4
  68. package/src/components/annotation-popups/JsonLdView.tsx +1 -1
  69. package/src/components/annotation-popups/__tests__/JsonLdView.test.tsx +8 -2
  70. package/src/components/modals/ReferenceWizardModal.tsx +2 -1
  71. package/src/components/modals/ResourceGenerateModal.tsx +10 -4
  72. package/src/components/modals/ResourceSearchModal.tsx +3 -1
  73. package/src/components/modals/SearchModal.tsx +3 -1
  74. package/src/components/modals/__tests__/ResourceGenerateModal.test.tsx +5 -0
  75. package/src/components/modals/__tests__/ResourceSearchModal.test.tsx +2 -1
  76. package/src/components/modals/__tests__/SearchModal.search-wiring.test.tsx +2 -1
  77. package/src/components/resource/AnnotateView.tsx +70 -138
  78. package/src/components/resource/AnnotationHistory.tsx +53 -17
  79. package/src/components/resource/BrowseView.tsx +3 -2
  80. package/src/components/resource/ResourceViewer.tsx +39 -22
  81. package/src/components/resource/__tests__/AnnotateView.registry.test.tsx +114 -0
  82. package/src/components/resource/__tests__/AnnotationHistory.test.tsx +63 -41
  83. package/src/components/resource/__tests__/BrowseView.reference-hover.test.tsx +2 -1
  84. package/src/components/resource/__tests__/ResourceViewer.multi-mount-invalidation.test.tsx +140 -0
  85. package/src/components/resource/__tests__/ResourceViewer.registry.test.tsx +89 -0
  86. package/src/components/resource/annotate-renderers.tsx +155 -0
  87. package/src/components/resource/panels/JsonLdPanel.tsx +1 -1
  88. package/src/components/resource/panels/ReferencesPanel.tsx +38 -3
  89. package/src/components/resource/panels/TagEntry.tsx +5 -1
  90. package/src/components/resource/panels/TaggingPanel.tsx +6 -1
  91. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +41 -0
  92. package/src/components/resource/panels/__tests__/JsonLdPanel.test.tsx +8 -2
  93. package/src/components/resource/panels/__tests__/ReferencesPanel.headless.test.tsx +90 -0
  94. package/src/components/resource/panels/__tests__/TagEntry.test.tsx +2 -2
  95. package/src/components/resource/panels/__tests__/TaggingPanel.test.tsx +2 -2
  96. package/src/components/resource/panels/__tests__/UnifiedAnnotationsPanel.failure.test.tsx +78 -0
  97. package/src/components/settings/SettingsPanel.tsx +6 -2
  98. package/src/components/settings/__tests__/SettingsPanel.test.tsx +28 -3
  99. package/src/features/admin-devops/__tests__/AdminDevOpsPage.test.tsx +3 -11
  100. package/src/features/admin-devops/components/AdminDevOpsPage.tsx +0 -3
  101. package/src/features/admin-exchange/__tests__/AdminExchangePage.test.tsx +0 -1
  102. package/src/features/admin-exchange/components/AdminExchangePage.tsx +0 -3
  103. package/src/features/admin-exchange/state/__tests__/exchange-state-unit.test.ts +1 -1
  104. package/src/features/admin-security/__tests__/AdminSecurityPage.test.tsx +0 -8
  105. package/src/features/admin-security/components/AdminSecurityPage.tsx +0 -3
  106. package/src/features/admin-security/state/__tests__/admin-security-state-unit.test.ts +10 -9
  107. package/src/features/admin-security/state/admin-security-state-unit.ts +3 -2
  108. package/src/features/admin-users/__tests__/AdminUsersPage.test.tsx +0 -1
  109. package/src/features/admin-users/components/AdminUsersPage.tsx +0 -3
  110. package/src/features/admin-users/state/__tests__/admin-users-state-unit.test.ts +7 -6
  111. package/src/features/admin-users/state/admin-users-state-unit.ts +3 -2
  112. package/src/features/auth-welcome/state/__tests__/welcome-state-unit.test.ts +36 -26
  113. package/src/features/auth-welcome/state/welcome-state-unit.ts +7 -2
  114. package/src/features/moderate-entity-tags/__tests__/EntityTagsPage.test.tsx +0 -2
  115. package/src/features/moderate-entity-tags/components/EntityTagsPage.tsx +0 -3
  116. package/src/features/moderate-entity-tags/state/__tests__/entity-tags-state-unit.test.ts +37 -12
  117. package/src/features/moderate-entity-tags/state/entity-tags-state-unit.ts +9 -10
  118. package/src/features/moderate-recent/__tests__/RecentDocumentsPage.test.tsx +3 -5
  119. package/src/features/moderate-recent/components/RecentDocumentsPage.tsx +0 -3
  120. package/src/features/moderate-tag-schemas/__tests__/TagSchemasPage.test.tsx +3 -5
  121. package/src/features/moderate-tag-schemas/components/TagSchemasPage.tsx +0 -3
  122. package/src/features/moderation-linked-data/__tests__/LinkedDataPage.test.tsx +0 -1
  123. package/src/features/moderation-linked-data/components/LinkedDataPage.tsx +0 -3
  124. package/src/features/resource-compose/__tests__/ResourceComposePage.test.tsx +17 -7
  125. package/src/features/resource-compose/components/ResourceComposePage.tsx +5 -3
  126. package/src/features/resource-compose/state/__tests__/compose-page-state-unit.test.ts +33 -12
  127. package/src/features/resource-compose/state/compose-page-state-unit.ts +9 -8
  128. package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +3 -2
  129. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +25 -3
  130. package/src/features/resource-discovery/state/__tests__/discover-state-unit.test.ts +90 -25
  131. package/src/features/resource-discovery/state/discover-state-unit.ts +30 -30
  132. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +9 -5
  133. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +70 -40
  134. package/src/features/resource-viewer/state/__tests__/resource-loader-state-unit.test.ts +111 -8
  135. package/src/features/resource-viewer/state/__tests__/resource-viewer-page-state-unit.test.ts +167 -27
  136. package/src/features/resource-viewer/state/resource-loader-state-unit.ts +74 -9
  137. package/src/features/resource-viewer/state/resource-viewer-page-state-unit.ts +29 -28
  138. package/translations/ar.json +10 -3
  139. package/translations/bn.json +10 -3
  140. package/translations/cs.json +10 -3
  141. package/translations/da.json +10 -3
  142. package/translations/de.json +10 -3
  143. package/translations/el.json +10 -3
  144. package/translations/en.json +10 -3
  145. package/translations/es.json +10 -3
  146. package/translations/fa.json +10 -3
  147. package/translations/fi.json +10 -3
  148. package/translations/fr.json +10 -3
  149. package/translations/he.json +10 -3
  150. package/translations/hi.json +10 -3
  151. package/translations/id.json +10 -3
  152. package/translations/it.json +10 -3
  153. package/translations/ja.json +10 -3
  154. package/translations/ko.json +10 -3
  155. package/translations/ms.json +10 -3
  156. package/translations/nl.json +10 -3
  157. package/translations/no.json +10 -3
  158. package/translations/pl.json +10 -3
  159. package/translations/pt.json +10 -3
  160. package/translations/ro.json +10 -3
  161. package/translations/sv.json +10 -3
  162. package/translations/th.json +10 -3
  163. package/translations/tr.json +10 -3
  164. package/translations/uk.json +10 -3
  165. package/translations/vi.json +10 -3
  166. package/translations/zh.json +10 -3
  167. package/dist/ar-ZHKO4XDR.js.map +0 -1
  168. package/dist/bn-3BUDKAK5.js.map +0 -1
  169. package/dist/chunk-PFUXQPWJ.js.map +0 -1
  170. package/dist/chunk-R52YAGHK.js.map +0 -1
  171. package/dist/cs-2EFEUKTW.js.map +0 -1
  172. package/dist/da-SUD3Q44Q.js.map +0 -1
  173. package/dist/de-6IC5QRX7.js.map +0 -1
  174. package/dist/el-Q4NAXFRC.js.map +0 -1
  175. package/dist/es-YUKZBD4W.js.map +0 -1
  176. package/dist/fa-OJ47LILE.js.map +0 -1
  177. package/dist/fi-QFFL5CUB.js.map +0 -1
  178. package/dist/fr-BOQZZWP4.js.map +0 -1
  179. package/dist/he-LXDY3TFA.js.map +0 -1
  180. package/dist/hi-HOJER77V.js.map +0 -1
  181. package/dist/id-I5WQ6EWD.js.map +0 -1
  182. package/dist/it-UYH642IJ.js.map +0 -1
  183. package/dist/ja-JTVWAC4L.js.map +0 -1
  184. package/dist/ko-IHXFMOIZ.js.map +0 -1
  185. package/dist/ms-JH25VFLO.js.map +0 -1
  186. package/dist/nl-SURXW7IQ.js.map +0 -1
  187. package/dist/no-HXIKQFDZ.js.map +0 -1
  188. package/dist/pl-7A4KU6XK.js.map +0 -1
  189. package/dist/pt-6MGYP7Q5.js.map +0 -1
  190. package/dist/ro-IROCHNIA.js.map +0 -1
  191. package/dist/sv-WDJD75CV.js.map +0 -1
  192. package/dist/th-RIO2E6B3.js.map +0 -1
  193. package/dist/tr-TZ7ERCIN.js.map +0 -1
  194. package/dist/uk-ZFWDKLUE.js.map +0 -1
  195. package/dist/vi-UIOSP2JG.js.map +0 -1
  196. package/dist/zh-6R6YUY46.js.map +0 -1
  197. /package/dist/{en-P2L4X27N.js.map → en-QFIEG3CA.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as _semiont_react_ui from '@semiont/react-ui';
2
+ import { BrowseMediaRenderers as BrowseMediaRenderers$1, AnnotateMediaRenderers as AnnotateMediaRenderers$1 } from '@semiont/react-ui';
2
3
  import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, StateUnit, GatheredContext, EventMap, DiscoveredKB, AnnotationId, AnchorStrategy, AnchorConfidence, StoredEventLike, ConnectionState, BackendDownload, ProgressEvent, AccessToken } from '@semiont/core';
3
4
  export { Annotation } from '@semiont/core';
4
5
  import * as React$1 from 'react';
@@ -6,7 +7,7 @@ import React__default, { ComponentType, ReactNode, KeyboardEvent as KeyboardEven
6
7
  import * as _codemirror_state from '@codemirror/state';
7
8
  import { HighlightStyle } from '@codemirror/language';
8
9
  import { WidgetType } from '@codemirror/view';
9
- import { SemiontClient, SemiontSession, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, OpenResource, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
10
+ import { SemiontSession, SemiontClient, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, OpenResource, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
10
11
  export { BeckonStateUnit, GatherStateUnit, GenerateDocumentOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, TagSchema, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
11
12
  import { Observable } from 'rxjs';
12
13
 
@@ -765,6 +766,37 @@ declare function sanitizeImageURL(url: string): string | null;
765
766
 
766
767
  declare function useStateUnit<T extends StateUnit>(factory: () => T): T;
767
768
 
769
+ /**
770
+ * Construct a state unit whose lifetime is bound to a live `SemiontSession`
771
+ * (.plans/SESSION-TYPED-FACTORIES.md — the session gate as API shape).
772
+ *
773
+ * Contract, in the order the KB-switch bug family demands it:
774
+ * - one construction per live session, however often the component rerenders;
775
+ * - on session swap, the OLD unit's `dispose()` runs strictly BEFORE the new
776
+ * factory — a unit must never coexist with its successor, or it keeps
777
+ * serving a disposed client's inert (B16) caches;
778
+ * - no session → no construction, and the `T | undefined` return makes the
779
+ * caller handle it — the null-check lives at exactly this one layer, not
780
+ * inside `!`-asserted factories (the auth/welcome production crash);
781
+ * - unmount disposes.
782
+ *
783
+ * Keying is by session OBJECT identity, which coincides with `session.id`:
784
+ * successive sessions are distinct objects with distinct ids by construction
785
+ * (`SemiontSession`'s instance counter exists for exactly this).
786
+ *
787
+ * The unit is created inside the effect, not during render — render stays
788
+ * pure (StrictMode-safe: its probe mount cleanly disposes the probe unit),
789
+ * and React's cleanup-before-next-effect ordering is what GUARANTEES
790
+ * dispose-before-create on swap. Consequence: the unit is `undefined` on the
791
+ * very first render frame; session-gated pages already render a loading
792
+ * state for exactly that frame.
793
+ *
794
+ * The factory is read through a ref so the effect keys ONLY on the session —
795
+ * an inline-closure factory (the universal call-site idiom) must not retrigger
796
+ * construction on every render.
797
+ */
798
+ declare function useSessionStateUnit<T extends StateUnit>(session: SemiontSession | undefined, factory: (session: SemiontSession) => T): T | undefined;
799
+
768
800
  /**
769
801
  * Creates a debounced version of a callback function
770
802
  *
@@ -825,13 +857,14 @@ declare function getShortcutDisplay(shortcut: KeyboardShortcut): string;
825
857
  */
826
858
  declare function useIsTyping(): boolean;
827
859
 
828
- /**
829
- * Hook to manage line numbers display setting with localStorage persistence
830
- */
831
- declare function useLineNumbers(): {
860
+ interface LineNumbersContextValue {
832
861
  showLineNumbers: boolean;
833
862
  toggleLineNumbers: () => void;
834
- };
863
+ }
864
+ declare function LineNumbersProvider({ children }: {
865
+ children: ReactNode;
866
+ }): React$1.JSX.Element;
867
+ declare function useLineNumbers(): LineNumbersContextValue;
835
868
 
836
869
  /**
837
870
  * Hook to manage hover delay setting with localStorage persistence
@@ -1692,7 +1725,6 @@ interface Props$9<T extends string = string> {
1692
1725
  declare function Toolbar<T extends string = string>({ context, activePanel, isArchived }: Props$9<T>): React$1.JSX.Element;
1693
1726
 
1694
1727
  interface SettingsPanelProps {
1695
- showLineNumbers: boolean;
1696
1728
  theme: 'light' | 'dark' | 'system';
1697
1729
  locale: string;
1698
1730
  isPendingLocaleChange?: boolean;
@@ -1706,7 +1738,7 @@ interface SettingsPanelProps {
1706
1738
  * @emits settings:theme-changed - Theme changed by user. Payload: { theme: 'light' | 'dark' | 'system' }
1707
1739
  * @emits settings:hover-delay-changed - Hover delay changed by user. Payload: { hoverDelayMs: number }
1708
1740
  */
1709
- declare function SettingsPanel({ showLineNumbers, theme, locale, isPendingLocaleChange, hoverDelayMs }: SettingsPanelProps): React__default.JSX.Element;
1741
+ declare function SettingsPanel({ theme, locale, isPendingLocaleChange, hoverDelayMs }: SettingsPanelProps): React__default.JSX.Element;
1710
1742
 
1711
1743
  interface JsonLdViewProps {
1712
1744
  annotation: Annotation;
@@ -1810,6 +1842,49 @@ declare function PermissionDeniedModal(): React$1.JSX.Element;
1810
1842
  */
1811
1843
  declare function SessionExpiredModal(): React$1.JSX.Element;
1812
1844
 
1845
+ /**
1846
+ * Common props for an ANNOTATING media renderer. The read-only sibling is
1847
+ * `MediaRendererProps` in `browse-renderers.tsx`; this one additionally
1848
+ * carries the active tool, because annotating is an interaction, not a paint.
1849
+ *
1850
+ * `content` is decoded text for the text renderer, or a media URL for the
1851
+ * image / PDF renderers. `annotations` is the FLAT list — a renderer derives
1852
+ * whatever shape it needs (the text one segments it), so a custom renderer is
1853
+ * never handed a projection only one implementation can use.
1854
+ * See .plans/ANNOTATE-RENDERER-REGISTRY.md (D1)
1855
+ */
1856
+ interface AnnotateMediaRendererProps {
1857
+ content: string;
1858
+ mimeType: string;
1859
+ resourceUri: string;
1860
+ annotations: Annotation[];
1861
+ /** Session for interaction routing — the canvases emit via `session.client`. */
1862
+ session: SemiontSession | null;
1863
+ /** Active drawing tool, or null when nothing is selected (read-only paint). */
1864
+ drawingMode: ShapeType | null;
1865
+ selectedMotivation: SelectionMotivation | null;
1866
+ hoveredAnnotationId?: string | null;
1867
+ hoverDelayMs?: number;
1868
+ newAnnotationIds?: Set<string>;
1869
+ scrollToAnnotationId?: string | null;
1870
+ showLineNumbers?: boolean;
1871
+ enableWidgets?: boolean;
1872
+ getTargetResourceName?: (resourceId: string) => string | undefined;
1873
+ generatingReferenceId?: string | null;
1874
+ }
1875
+ /** Annotating media dispatch, keyed by the registry render mode. */
1876
+ type AnnotateMediaRenderers = Partial<Record<string, ComponentType<AnnotateMediaRendererProps>>>;
1877
+ declare function TextAnnotateRenderer({ content, annotations, session, newAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, showLineNumbers, hoverDelayMs, enableWidgets, getTargetResourceName, generatingReferenceId, }: AnnotateMediaRendererProps): React$1.JSX.Element;
1878
+ declare function ImageAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
1879
+ declare function PdfAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
1880
+ /**
1881
+ * Default annotating media renderers. `AnnotateView` merges a caller's
1882
+ * `renderers` override on top of these, so a host can swap one renderer (its
1883
+ * own PDF viewer, say) or add a mode without forking the view — the same seam
1884
+ * `defaultBrowseRenderers` gives the read-only path.
1885
+ */
1886
+ declare const defaultAnnotateRenderers: Record<'text' | 'image' | 'pdf', ComponentType<AnnotateMediaRendererProps>>;
1887
+
1813
1888
  interface Props$8 {
1814
1889
  content: string;
1815
1890
  mimeType?: string;
@@ -1833,6 +1908,8 @@ interface Props$8 {
1833
1908
  onModeChange?: (mode: boolean) => void;
1834
1909
  /** Render the built-in bar (default). false → no bar; selection capture and drawing stay live. */
1835
1910
  showToolbar?: boolean;
1911
+ /** Override the annotating media renderers (render mode → renderer); merged over the defaults. */
1912
+ renderers?: AnnotateMediaRenderers;
1836
1913
  }
1837
1914
  /**
1838
1915
  * View component for annotating resources with text selection and drawing
@@ -1840,17 +1917,30 @@ interface Props$8 {
1840
1917
  * @emits mark:requested - User requested to create annotation. Payload: { selector: Selector | Selector[], motivation: SelectionMotivation }
1841
1918
  * @subscribes beckon:hover - Annotation hovered. Payload: { annotationId: string | null }
1842
1919
  */
1843
- declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session, newAnnotationIds, onModeChange, showToolbar, }: Props$8): React$1.JSX.Element;
1920
+ declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session, newAnnotationIds, onModeChange, showToolbar, renderers, }: Props$8): React$1.JSX.Element;
1844
1921
 
1845
1922
  interface Props$7 {
1846
- rUri: ResourceId;
1923
+ /**
1924
+ * The resource's stored events, and how their load is going. Supplied by the
1925
+ * owner (which already holds them on its state unit) rather than fetched
1926
+ * here: a self-fetching panel can only model (value | not-yet), so a
1927
+ * terminal failure (B15) is indistinguishable from a request still in
1928
+ * flight and the panel says "Loading..." for ever.
1929
+ * See .plans/PANEL-FAILURE-STATES.md
1930
+ */
1931
+ events: StoredEventLike[];
1932
+ eventsLoading?: boolean;
1933
+ eventsError?: Error | null;
1934
+ onRetryEvents?: () => void;
1935
+ /** Annotations for the same resource — used to resolve event → annotation. */
1936
+ annotations?: Annotation[];
1847
1937
  hoveredAnnotationId?: string | null;
1848
1938
  onEventHover?: (annotationId: string | null) => void;
1849
1939
  onEventClick?: (annotationId: string | null) => void;
1850
1940
  Link: React__default.ComponentType<LinkComponentProps>;
1851
1941
  routes: RouteBuilder;
1852
1942
  }
1853
- declare function AnnotationHistory({ rUri, hoveredAnnotationId, onEventHover, onEventClick, Link, routes }: Props$7): React__default.JSX.Element | null;
1943
+ declare function AnnotationHistory({ events: eventsData, eventsLoading, eventsError, onRetryEvents, annotations, hoveredAnnotationId, onEventHover, onEventClick, Link, routes, }: Props$7): React__default.JSX.Element | null;
1854
1944
 
1855
1945
  /**
1856
1946
  * Common props for a read-only ("browse") media renderer. `content` is decoded
@@ -1955,19 +2045,21 @@ declare function HistoryEvent({ event, annotations, allEvents, isRelated, t, Lin
1955
2045
  /**
1956
2046
  * ResourceViewer - Display and interact with resource content and annotations
1957
2047
  *
1958
- * This component uses event-driven architecture for real-time updates:
1959
- * - Subscribes to make-meaning events (mark:added, mark:removed, mark:body-updated)
1960
- * - Automatically invalidates cache when annotations change
1961
- * - No manual refetch needed - events handle cache invalidation
2048
+ * Real-time updates arrive through the sdk, not through this component:
2049
+ * the client's BrowseNamespace invalidates the right resource's annotation
2050
+ * list on mark:added/mark:removed (payload-keyed) and patches
2051
+ * mark:body-updated in place, so the live queries feeding `annotations`
2052
+ * refresh on their own. The viewer subscribes only to `browse:click`
2053
+ * (annotation-click routing).
1962
2054
  *
1963
2055
  * Bring-your-own-session: the `session` (SemiontSession) and the host's
1964
2056
  * navigation / panel callbacks come in as props — no SemiontProvider required.
1965
- * Every event it subscribes to is session-scoped (mark:*, browse:click) and
1966
- * reaches it via `session.subscribe`. Translations fall back to built-in English
1967
- * when no TranslationProvider is mounted; caching flows through `session.client.browse.*`.
2057
+ * Every event it subscribes to is session-scoped and reaches it via
2058
+ * `session.subscribe`. Translations fall back to built-in English when no
2059
+ * TranslationProvider is mounted; caching flows through `session.client.browse.*`.
1968
2060
  *
1969
2061
  * Event flow:
1970
- * make-meaning → EventLog → SSE → EventBus → ResourceViewerCache invalidation
2062
+ * make-meaning → EventLog → SSE → EventBus → sdk cache invalidation live queries
1971
2063
  */
1972
2064
  interface Props$4 {
1973
2065
  resource: ResourceDescriptor & {
@@ -2019,18 +2111,31 @@ interface Props$4 {
2019
2111
  * this makes that opt-out a contract instead of a CSS override.
2020
2112
  */
2021
2113
  showToolbar?: boolean;
2114
+ /**
2115
+ * Override the read-only / annotating media renderers respectively; each is
2116
+ * merged over its defaults by the view below.
2117
+ *
2118
+ * Two flat props rather than one nested object: the registries are
2119
+ * separately typed (`MediaRendererProps` vs `AnnotateMediaRendererProps`)
2120
+ * and nesting them would imply an interchangeability that does not exist.
2121
+ *
2122
+ * Forwarding them is what makes the registries reachable at all for a host
2123
+ * that imports `ResourceViewer` — the documented entry point. Before this,
2124
+ * reaching `BrowseView`'s `renderers` meant dropping to `BrowseView`
2125
+ * directly and reimplementing the browse/annotate switching this component
2126
+ * exists to provide. See .plans/ANNOTATE-RENDERER-REGISTRY.md (D5)
2127
+ */
2128
+ browseRenderers?: BrowseMediaRenderers;
2129
+ annotateRenderers?: AnnotateMediaRenderers;
2022
2130
  }
2023
2131
  /**
2024
2132
  * Deletion calls `session.client.mark.delete(...)` directly (no bus emit);
2025
2133
  * panel opening invokes the host's `onOpenPanel` callback — the host owns
2026
2134
  * the panel and any `panel:open` emission.
2027
2135
  *
2028
- * @subscribes mark:added - New annotation was added. Payload: { annotation: Annotation }
2029
- * @subscribes mark:removed - Annotation was removed. Payload: { annotationId: string }
2030
- * @subscribes mark:body-updated - Annotation was updated. Payload: { annotation: Annotation }
2031
2136
  * @subscribes browse:click - User clicked on annotation. Payload: { annotationId: string, motivation, anchorRect? }
2032
2137
  */
2033
- declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline, newAnnotationIds, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp, annotateMode: annotateModeProp, onAnnotateModeChange, clickAction: clickActionProp, onClickActionChange, selectionMotivation: selectionMotivationProp, onSelectionMotivationChange, shape: shapeProp, onShapeChange, showToolbar, }: Props$4): React__default.JSX.Element;
2138
+ declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline, newAnnotationIds, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp, annotateMode: annotateModeProp, onAnnotateModeChange, clickAction: clickActionProp, onClickActionChange, selectionMotivation: selectionMotivationProp, onSelectionMotivationChange, shape: shapeProp, onShapeChange, showToolbar, browseRenderers, annotateRenderers, }: Props$4): React__default.JSX.Element;
2034
2139
 
2035
2140
  interface AssessmentEntryProps {
2036
2141
  /** Session for interaction routing (browse.click etc.); the panel threads it. */
@@ -2266,9 +2371,25 @@ interface Props$1 {
2266
2371
  Link: React__default.ComponentType<LinkComponentProps>;
2267
2372
  routes: RouteBuilder;
2268
2373
  allEntityTypes: string[];
2374
+ /**
2375
+ * The entity-type list failed to load. Without it the picker's empty branch
2376
+ * asserts "no entity types available" — a claim about the knowledge base
2377
+ * that a failed load cannot support.
2378
+ * See .plans/PANEL-FAILURE-STATES.md
2379
+ */
2380
+ entityTypesError?: Error | null;
2269
2381
  generatingReferenceId?: string | null;
2270
2382
  referencedBy?: ReferencedBy[];
2271
2383
  referencedByLoading?: boolean;
2384
+ /**
2385
+ * The incoming-references load failed terminally (B15). Distinct from
2386
+ * `referencedByLoading` — without it a dead request is indistinguishable
2387
+ * from one still in flight, and the panel says "Loading..." forever.
2388
+ * See .plans/PANEL-FAILURE-STATES.md
2389
+ */
2390
+ referencedByError?: Error | null;
2391
+ /** Retry the failed incoming-references load. */
2392
+ onRetryReferencedBy?: () => void;
2272
2393
  pendingAnnotation: PendingAnnotation$2 | null;
2273
2394
  scrollToAnnotationId?: string | null;
2274
2395
  onScrollCompleted?: () => void;
@@ -2286,7 +2407,7 @@ interface Props$1 {
2286
2407
  * @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
2287
2408
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
2288
2409
  */
2289
- declare function ReferencesPanel({ session, onOpenResource, resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
2410
+ declare function ReferencesPanel({ session, onOpenResource, resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, entityTypesError, generatingReferenceId, referencedBy, referencedByLoading, referencedByError, onRetryReferencedBy, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
2290
2411
 
2291
2412
  type Agent = components['schemas']['Agent'];
2292
2413
  interface Props {
@@ -2396,6 +2517,14 @@ interface UnifiedAnnotationsPanelProps {
2396
2517
  /** Host-owned navigation: called with the resolved resource id when a reference entry opens. */
2397
2518
  onOpenResource?: (resourceId: string) => void;
2398
2519
  annotations: Annotation[];
2520
+ /**
2521
+ * The annotations load failed terminally (B15). Every tab here derives from
2522
+ * the one `annotations` array, so without this the panel presents an empty
2523
+ * array as fact — "no highlights" for a resource that may be full of them.
2524
+ * See .plans/PANEL-FAILURE-STATES.md
2525
+ */
2526
+ annotationsError?: Error | null;
2527
+ onRetryAnnotations?: () => void;
2399
2528
  annotators: Record<string, Annotator>;
2400
2529
  annotateMode?: boolean;
2401
2530
  assistingMotivation?: Motivation | null;
@@ -2405,6 +2534,9 @@ interface UnifiedAnnotationsPanelProps {
2405
2534
  generatingReferenceId?: string | null;
2406
2535
  referencedBy?: any[];
2407
2536
  referencedByLoading?: boolean;
2537
+ entityTypesError?: Error | null;
2538
+ referencedByError?: Error | null;
2539
+ onRetryReferencedBy?: () => void;
2408
2540
  resourceId: string;
2409
2541
  initialTab?: TabKey;
2410
2542
  initialTabGeneration?: number;
@@ -2751,6 +2883,11 @@ interface ResourceGenerateModalProps {
2751
2883
  defaultTitle: string;
2752
2884
  locale: string;
2753
2885
  gatherDefaults?: Partial<ResourceGatherConfig>;
2886
+ /**
2887
+ * Entity types offered in the exclusion picker. Owner-supplied so the
2888
+ * modal cannot present a failed load as an empty vocabulary.
2889
+ */
2890
+ entityTypeOptions?: string[];
2754
2891
  /**
2755
2892
  * Emit the chosen generation config. The parent runs the job
2756
2893
  * (`client.yield.fromResource(resourceId, …).run(…)`) — mirrors how the
@@ -2764,7 +2901,7 @@ interface ResourceGenerateModalProps {
2764
2901
  * `gather.resource` → review the gathered `GatheredContext` → configure
2765
2902
  * generation → emit. Reuses the kind-aware `GatherContextStep` for the review.
2766
2903
  */
2767
- declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, locale, gatherDefaults, onGenerateSubmit, translations: t, }: ResourceGenerateModalProps): React$1.JSX.Element;
2904
+ declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, locale, gatherDefaults, entityTypeOptions, onGenerateSubmit, translations: t, }: ResourceGenerateModalProps): React$1.JSX.Element;
2768
2905
 
2769
2906
  interface SearchModalProps$1 {
2770
2907
  isOpen: boolean;
@@ -3247,7 +3384,6 @@ interface DevOpsFeature {
3247
3384
  interface AdminDevOpsPageProps {
3248
3385
  suggestedFeatures: DevOpsFeature[];
3249
3386
  theme: 'light' | 'dark' | 'system';
3250
- showLineNumbers: boolean;
3251
3387
  activePanel: string | null;
3252
3388
  translations: {
3253
3389
  title: string;
@@ -3262,7 +3398,7 @@ interface AdminDevOpsPageProps {
3262
3398
  ToolbarPanels: React__default.ComponentType<any>;
3263
3399
  Toolbar: React__default.ComponentType<any>;
3264
3400
  }
3265
- declare function AdminDevOpsPage({ suggestedFeatures, theme, showLineNumbers, activePanel, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): React__default.JSX.Element;
3401
+ declare function AdminDevOpsPage({ suggestedFeatures, theme, activePanel, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): React__default.JSX.Element;
3266
3402
 
3267
3403
  /**
3268
3404
  * ExportCard — Backup trigger
@@ -3419,13 +3555,12 @@ interface AdminExchangePageProps {
3419
3555
  importMessage?: string | undefined;
3420
3556
  importResult?: Record<string, unknown> | undefined;
3421
3557
  theme: 'light' | 'dark' | 'system';
3422
- showLineNumbers: boolean;
3423
3558
  activePanel: string | null;
3424
3559
  translations: AdminExchangePageTranslations;
3425
3560
  ToolbarPanels: React__default.ComponentType<any>;
3426
3561
  Toolbar: React__default.ComponentType<any>;
3427
3562
  }
3428
- declare function AdminExchangePage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminExchangePageProps): React__default.JSX.Element;
3563
+ declare function AdminExchangePage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminExchangePageProps): React__default.JSX.Element;
3429
3564
 
3430
3565
  /**
3431
3566
  * AdminSecurityPage Component
@@ -3443,7 +3578,6 @@ interface AdminSecurityPageProps {
3443
3578
  allowedDomains: string[];
3444
3579
  isLoading: boolean;
3445
3580
  theme: 'light' | 'dark' | 'system';
3446
- showLineNumbers: boolean;
3447
3581
  activePanel: string | null;
3448
3582
  translations: {
3449
3583
  title: string;
@@ -3467,7 +3601,7 @@ interface AdminSecurityPageProps {
3467
3601
  ToolbarPanels: React__default.ComponentType<any>;
3468
3602
  Toolbar: React__default.ComponentType<any>;
3469
3603
  }
3470
- declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): React__default.JSX.Element;
3604
+ declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): React__default.JSX.Element;
3471
3605
 
3472
3606
  /**
3473
3607
  * LinkedDataPage — JSON-LD Export/Import moderation page
@@ -3496,13 +3630,12 @@ interface LinkedDataPageProps {
3496
3630
  importMessage?: string | undefined;
3497
3631
  importResult?: Record<string, unknown> | undefined;
3498
3632
  theme: 'light' | 'dark' | 'system';
3499
- showLineNumbers: boolean;
3500
3633
  activePanel: string | null;
3501
3634
  translations: LinkedDataPageTranslations;
3502
3635
  ToolbarPanels: React__default.ComponentType<any>;
3503
3636
  Toolbar: React__default.ComponentType<any>;
3504
3637
  }
3505
- declare function LinkedDataPage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: LinkedDataPageProps): React__default.JSX.Element;
3638
+ declare function LinkedDataPage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: LinkedDataPageProps): React__default.JSX.Element;
3506
3639
 
3507
3640
  /**
3508
3641
  * AdminUsersPage Component
@@ -3540,7 +3673,6 @@ interface AdminUsersPageProps {
3540
3673
  onAddUser: () => void;
3541
3674
  onExportUsers: () => void;
3542
3675
  theme: 'light' | 'dark' | 'system';
3543
- showLineNumbers: boolean;
3544
3676
  activePanel: string | null;
3545
3677
  translations: {
3546
3678
  title: string;
@@ -3590,7 +3722,7 @@ interface AdminUsersPageProps {
3590
3722
  };
3591
3723
  };
3592
3724
  }
3593
- declare function AdminUsersPage({ users, userStats, isLoadingUsers, isLoadingStats, onUpdateUser, onDeleteUser, onAddUser, onExportUsers, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, buttonStyles, }: AdminUsersPageProps): React__default.JSX.Element;
3725
+ declare function AdminUsersPage({ users, userStats, isLoadingUsers, isLoadingStats, onUpdateUser, onDeleteUser, onAddUser, onExportUsers, theme, activePanel, translations: t, ToolbarPanels, Toolbar, buttonStyles, }: AdminUsersPageProps): React__default.JSX.Element;
3594
3726
 
3595
3727
  /**
3596
3728
  * SignInForm - Pure React component for authentication
@@ -3822,7 +3954,6 @@ interface EntityTagsPageProps {
3822
3954
  onAddTag: () => void;
3823
3955
  isAddingTag: boolean;
3824
3956
  theme: 'light' | 'dark' | 'system';
3825
- showLineNumbers: boolean;
3826
3957
  activePanel: string | null;
3827
3958
  translations: {
3828
3959
  pageTitle: string;
@@ -3836,7 +3967,7 @@ interface EntityTagsPageProps {
3836
3967
  ToolbarPanels: React__default.ComponentType<any>;
3837
3968
  Toolbar: React__default.ComponentType<any>;
3838
3969
  }
3839
- declare function EntityTagsPage({ entityTypes, error, newTag, onNewTagChange, onAddTag, isAddingTag, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: EntityTagsPageProps): React__default.JSX.Element;
3970
+ declare function EntityTagsPage({ entityTypes, error, newTag, onNewTagChange, onAddTag, isAddingTag, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: EntityTagsPageProps): React__default.JSX.Element;
3840
3971
 
3841
3972
  /**
3842
3973
  * RecentDocumentsPage Component
@@ -3849,7 +3980,6 @@ interface RecentDocumentsPageProps {
3849
3980
  hasDocuments: boolean;
3850
3981
  isLoading: boolean;
3851
3982
  theme: 'light' | 'dark' | 'system';
3852
- showLineNumbers: boolean;
3853
3983
  activePanel: string | null;
3854
3984
  translations: {
3855
3985
  pageTitle: string;
@@ -3863,7 +3993,7 @@ interface RecentDocumentsPageProps {
3863
3993
  ToolbarPanels: React__default.ComponentType<any>;
3864
3994
  Toolbar: React__default.ComponentType<any>;
3865
3995
  }
3866
- declare function RecentDocumentsPage({ isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: RecentDocumentsPageProps): React__default.JSX.Element;
3996
+ declare function RecentDocumentsPage({ isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: RecentDocumentsPageProps): React__default.JSX.Element;
3867
3997
 
3868
3998
  /**
3869
3999
  * TagSchemasPage Component
@@ -3876,7 +4006,6 @@ interface TagSchemasPageProps {
3876
4006
  schemas: TagSchema[];
3877
4007
  isLoading: boolean;
3878
4008
  theme: 'light' | 'dark' | 'system';
3879
- showLineNumbers: boolean;
3880
4009
  activePanel: string | null;
3881
4010
  translations: {
3882
4011
  pageTitle: string;
@@ -3887,7 +4016,44 @@ interface TagSchemasPageProps {
3887
4016
  ToolbarPanels: React__default.ComponentType<any>;
3888
4017
  Toolbar: React__default.ComponentType<any>;
3889
4018
  }
3890
- declare function TagSchemasPage({ schemas, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): React__default.JSX.Element;
4019
+ declare function TagSchemasPage({ schemas, isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): React__default.JSX.Element;
4020
+
4021
+ /**
4022
+ * A cache-backed list in its real states.
4023
+ *
4024
+ * `loading$` is true only until THIS subscription's first value; once a value
4025
+ * has arrived it never re-enters — even `retry()` routes through
4026
+ * `revalidating$` then — so a blocking spinner keyed on it structurally
4027
+ * cannot latch over rendered rows. The one deliberate exception is BEFORE any
4028
+ * value: `retry()` on a never-loaded list returns to the blocking state,
4029
+ * because there is nothing to render behind a non-blocking indicator.
4030
+ * `revalidating$` is the non-blocking sibling: the thunk's chain has moved to
4031
+ * a cache key that is not resolved yet (the cache emits `undefined` for it)
4032
+ * while `value$` still holds the previous key's rows. Views keep rendering the
4033
+ * stale list; a subtle indicator is optional.
4034
+ *
4035
+ * Why two signals instead of routing a late `undefined` back into `loading$`:
4036
+ * a stable cache key can never go value→undefined (`invalidate()` keeps the
4037
+ * value per B7; `remove()` is not used on list caches), so a late `undefined`
4038
+ * only ever means "new key, fetch in flight". Treating that as blocking
4039
+ * turns a routine filter switch into a full-page spinner — and if the fetch
4040
+ * is lost, into a spinner that never resolves. The failure path stays B14 →
4041
+ * B15 → `error$`, which views check before either signal.
4042
+ * See .plans/PANEL-FAILURE-STATES.md
4043
+ */
4044
+ interface ListState<T> {
4045
+ value$: Observable<T>;
4046
+ /**
4047
+ * True until the first value. Never re-enters after one — a `retry()`
4048
+ * before any value (nothing to render) is the sole way back in.
4049
+ */
4050
+ loading$: Observable<boolean>;
4051
+ /** True while a NEW key's fetch is pending behind a stale `value$`. */
4052
+ revalidating$: Observable<boolean>;
4053
+ error$: Observable<Error | null>;
4054
+ /** Re-subscribe: B15 clears the failure marker on a fresh `observe()`. */
4055
+ retry(): void;
4056
+ }
3891
4057
 
3892
4058
  type ComposeMode = 'new' | 'clone' | 'reference';
3893
4059
  interface ComposeParams {
@@ -3930,7 +4096,7 @@ interface ComposePageStateUnit extends StateUnit {
3930
4096
  cloneData$: Observable<CloneData | null>;
3931
4097
  referenceData$: Observable<ReferenceData | null>;
3932
4098
  gatheredContext$: Observable<GatheredContext | null>;
3933
- entityTypes$: Observable<string[]>;
4099
+ entityTypes: ListState<string[]>;
3934
4100
  /**
3935
4101
  * Live upload-progress for the in-flight `save(...)` call. Emits the
3936
4102
  * full `UploadProgress` lifecycle (started → finished) while a save is
@@ -3940,7 +4106,7 @@ interface ComposePageStateUnit extends StateUnit {
3940
4106
  uploadProgress$: Observable<UploadProgress | null>;
3941
4107
  save(params: SaveResourceParams$1): Promise<string>;
3942
4108
  }
3943
- declare function createComposePageStateUnit(client: SemiontClient, browse: ShellStateUnit, params: ComposeParams, auth?: AccessToken): ComposePageStateUnit;
4109
+ declare function createComposePageStateUnit(session: SemiontSession, browse: ShellStateUnit, params: ComposeParams, auth?: AccessToken): ComposePageStateUnit;
3944
4110
 
3945
4111
  /**
3946
4112
  * ResourceComposePage Component
@@ -3958,7 +4124,6 @@ interface ResourceComposePageProps {
3958
4124
  availableEntityTypes: string[];
3959
4125
  initialLocale: string;
3960
4126
  theme: 'light' | 'dark';
3961
- showLineNumbers: boolean;
3962
4127
  hoverDelayMs: number;
3963
4128
  activePanel: string | null;
3964
4129
  onSaveResource: (params: SaveResourceParams) => Promise<void>;
@@ -4020,7 +4185,7 @@ interface SaveResourceParams {
4020
4185
  annotationUri?: string;
4021
4186
  sourceDocumentId?: string;
4022
4187
  }
4023
- declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, showLineNumbers, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
4188
+ declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
4024
4189
 
4025
4190
  /**
4026
4191
  * Inline upload-progress affordance for the compose page.
@@ -4056,13 +4221,19 @@ interface ResourceDiscoveryPageProps {
4056
4221
  searchDocuments: ResourceDescriptor[];
4057
4222
  entityTypes: string[];
4058
4223
  isLoadingRecent: boolean;
4224
+ /**
4225
+ * The recent-resources load failed terminally (B15). Without it, "loading"
4226
+ * derived from an absent value never resolves and this route freezes.
4227
+ * See .plans/PANEL-FAILURE-STATES.md
4228
+ */
4229
+ recentError?: Error | null;
4230
+ onRetryRecent?: () => void;
4059
4231
  isSearching: boolean;
4060
4232
  searchQuery: string;
4061
4233
  onSearchQueryChange: (query: string) => void;
4062
4234
  selectedEntityType: string;
4063
4235
  onSelectedEntityTypeChange: (entityType: string) => void;
4064
4236
  theme: 'light' | 'dark';
4065
- showLineNumbers: boolean;
4066
4237
  activePanel: string | null;
4067
4238
  onNavigateToResource: (resourceId: string) => void;
4068
4239
  onNavigateToCompose: () => void;
@@ -4083,10 +4254,12 @@ interface ResourceDiscoveryPageProps {
4083
4254
  archived: string;
4084
4255
  created: string;
4085
4256
  loadingKnowledgeBase: string;
4257
+ recentFailed: string;
4258
+ retry: string;
4086
4259
  };
4087
4260
  ToolbarPanels: React__default.ComponentType<any>;
4088
4261
  }
4089
- declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, isSearching, searchQuery, onSearchQueryChange, selectedEntityType, onSelectedEntityTypeChange, theme, showLineNumbers, activePanel, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): React__default.JSX.Element;
4262
+ declare function ResourceDiscoveryPage({ recentDocuments, searchDocuments, entityTypes, isLoadingRecent, recentError, onRetryRecent, isSearching, searchQuery, onSearchQueryChange, selectedEntityType, onSelectedEntityTypeChange, theme, activePanel, onNavigateToResource, onNavigateToCompose, translations: t, ToolbarPanels, }: ResourceDiscoveryPageProps): React__default.JSX.Element;
4090
4263
 
4091
4264
  /**
4092
4265
  * ResourceCard Component
@@ -4151,6 +4324,13 @@ interface ResourceViewerPageProps {
4151
4324
  * Name of the active knowledge base (for display in panels)
4152
4325
  */
4153
4326
  knowledgeBaseName?: string | undefined;
4327
+ /**
4328
+ * Media-renderer overrides, forwarded to `ResourceViewer`. Present at this
4329
+ * tier too so a host embedding the whole page — not just the viewer — can
4330
+ * still swap a renderer. See .plans/ANNOTATE-RENDERER-REGISTRY.md (D5)
4331
+ */
4332
+ browseRenderers?: BrowseMediaRenderers$1;
4333
+ annotateRenderers?: AnnotateMediaRenderers$1;
4154
4334
  }
4155
4335
  /**
4156
4336
  * ResourceViewerPage - Main component
@@ -4165,8 +4345,6 @@ interface ResourceViewerPageProps {
4165
4345
  * @subscribes yield:clone - Clone the current resource
4166
4346
  * @subscribes beckon:sparkle - Trigger sparkle animation
4167
4347
  * @subscribes mark:added - Annotation was created (sparkle)
4168
- * @subscribes settings:theme-changed - UI theme changed
4169
- * @subscribes settings:line-numbers-toggled - Line numbers display toggled
4170
4348
  * @subscribes browse:reference-navigate - Navigate to a referenced document
4171
4349
  * @subscribes browse:entity-type-clicked - Navigate filtered by entity type
4172
4350
  *
@@ -4174,7 +4352,7 @@ interface ResourceViewerPageProps {
4174
4352
  * bind:body-error, job:complete, job:fail, mark:assist-timeout) are
4175
4353
  * subscribed by useOutcomeToasts.
4176
4354
  */
4177
- declare function ResourceViewerPage({ resource, rUri, locale, Link, routes, ToolbarPanels, refetchDocument, streamStatus, knowledgeBaseName, }: ResourceViewerPageProps): React__default.JSX.Element;
4355
+ declare function ResourceViewerPage({ resource, rUri, locale, Link, routes, ToolbarPanels, refetchDocument, streamStatus, knowledgeBaseName, browseRenderers, annotateRenderers, }: ResourceViewerPageProps): React__default.JSX.Element;
4178
4356
 
4179
4357
  interface HoverEmitterProps {
4180
4358
  onMouseEnter: () => void;
@@ -4186,7 +4364,7 @@ interface SessionStateUnit extends StateUnit {
4186
4364
  isLoggingOut$: Observable<boolean>;
4187
4365
  logout(): Promise<void>;
4188
4366
  }
4189
- declare function createSessionStateUnit(client: SemiontClient): SessionStateUnit;
4367
+ declare function createSessionStateUnit(session: SemiontSession): SessionStateUnit;
4190
4368
 
4191
4369
  interface AnnotationGroups {
4192
4370
  highlights: Annotation[];
@@ -4209,27 +4387,42 @@ interface ResourceViewerPageStateUnit extends StateUnit {
4209
4387
  mark: MarkStateUnit;
4210
4388
  gather: GatherStateUnit;
4211
4389
  yield: YieldStateUnit;
4212
- annotations$: Observable<Annotation[]>;
4390
+ annotations: ListState<Annotation[]>;
4391
+ entityTypes: ListState<string[]>;
4392
+ events: ListState<StoredEventResponse[]>;
4393
+ referencedBy: ListState<ReferencedByEntry[]>;
4394
+ /** Derived from `annotations.value$`; failure/loading live on `annotations`. */
4213
4395
  annotationGroups$: Observable<AnnotationGroups>;
4214
- entityTypes$: Observable<string[]>;
4215
- events$: Observable<StoredEventResponse[]>;
4216
- referencedBy$: Observable<ReferencedByEntry[]>;
4217
4396
  content$: Observable<string>;
4218
4397
  contentLoading$: Observable<boolean>;
4219
4398
  mediaToken$: Observable<string | null>;
4220
4399
  wizard$: Observable<WizardState>;
4221
4400
  closeWizard(): void;
4222
4401
  }
4223
- declare function createResourceViewerPageStateUnit(client: SemiontClient, resourceId: ResourceId, locale: string, browse: ShellStateUnit, options?: {
4402
+ declare function createResourceViewerPageStateUnit(session: SemiontSession, resourceId: ResourceId, locale: string, browse: ShellStateUnit, options?: {
4224
4403
  mediaType?: string;
4225
4404
  }): ResourceViewerPageStateUnit;
4226
4405
 
4227
4406
  interface ResourceLoaderStateUnit extends StateUnit {
4228
4407
  resource$: Observable<ResourceDescriptor | undefined>;
4229
4408
  isLoading$: Observable<boolean>;
4409
+ /** Terminal load failure (B15), or null. Cleared by any value or `invalidate()`. */
4410
+ error$: Observable<Error | null>;
4230
4411
  invalidate(): void;
4231
4412
  }
4232
- declare function createResourceLoaderStateUnit(client: SemiontClient, resourceId: ResourceId): ResourceLoaderStateUnit;
4413
+ /**
4414
+ * Load one resource, in three states: loading, loaded, failed.
4415
+ *
4416
+ * The third state is not optional. `browse.resource()` delivers a terminal
4417
+ * failure as an RxJS *error* notification (B15) when the B14 retry is
4418
+ * exhausted with nothing cached — and a key that failed has no value either,
4419
+ * so a (value | no value) model reports a dead request as an eternal spinner
4420
+ * and drops the reason entirely. This unit catches the notification here so
4421
+ * that (a) consumers can render the failure and retry it, and (b) it never
4422
+ * escapes to RxJS as an unhandled rethrow.
4423
+ * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md (D4)
4424
+ */
4425
+ declare function createResourceLoaderStateUnit(session: SemiontSession, resourceId: ResourceId): ResourceLoaderStateUnit;
4233
4426
 
4234
4427
  interface AdminUsersStateUnit extends StateUnit {
4235
4428
  browse: ShellStateUnit;
@@ -4242,7 +4435,7 @@ interface AdminUsersStateUnit extends StateUnit {
4242
4435
  isActive?: boolean;
4243
4436
  }): Promise<void>;
4244
4437
  }
4245
- declare function createAdminUsersStateUnit(client: SemiontClient, browse: ShellStateUnit): AdminUsersStateUnit;
4438
+ declare function createAdminUsersStateUnit(session: SemiontSession, browse: ShellStateUnit): AdminUsersStateUnit;
4246
4439
 
4247
4440
  interface AdminSecurityStateUnit extends StateUnit {
4248
4441
  browse: ShellStateUnit;
@@ -4250,7 +4443,7 @@ interface AdminSecurityStateUnit extends StateUnit {
4250
4443
  allowedDomains$: Observable<string[]>;
4251
4444
  isLoading$: Observable<boolean>;
4252
4445
  }
4253
- declare function createAdminSecurityStateUnit(client: SemiontClient, browse: ShellStateUnit): AdminSecurityStateUnit;
4446
+ declare function createAdminSecurityStateUnit(session: SemiontSession, browse: ShellStateUnit): AdminSecurityStateUnit;
4254
4447
 
4255
4448
  interface WelcomeStateUnit extends StateUnit {
4256
4449
  userData$: Observable<{
@@ -4259,7 +4452,7 @@ interface WelcomeStateUnit extends StateUnit {
4259
4452
  isProcessing$: Observable<boolean>;
4260
4453
  acceptTerms(): Promise<void>;
4261
4454
  }
4262
- declare function createWelcomeStateUnit(client: SemiontClient): WelcomeStateUnit;
4455
+ declare function createWelcomeStateUnit(session: SemiontSession): WelcomeStateUnit;
4263
4456
 
4264
4457
  interface DiscoverSearchPipeline {
4265
4458
  query$: Observable<string>;
@@ -4272,25 +4465,23 @@ interface DiscoverSearchPipeline {
4272
4465
  interface DiscoverStateUnit extends StateUnit {
4273
4466
  browse: ShellStateUnit;
4274
4467
  search: DiscoverSearchPipeline;
4275
- recentResources$: Observable<ResourceDescriptor[]>;
4276
- entityTypes$: Observable<string[]>;
4277
- isLoadingRecent$: Observable<boolean>;
4468
+ recent: ListState<ResourceDescriptor[]>;
4469
+ entityTypes: ListState<string[]>;
4278
4470
  selectedEntityType$: Observable<string>;
4279
4471
  setSelectedEntityType(value: string): void;
4280
4472
  }
4281
- declare function createDiscoverStateUnit(client: SemiontClient, browse: ShellStateUnit): DiscoverStateUnit;
4473
+ declare function createDiscoverStateUnit(session: SemiontSession, browse: ShellStateUnit): DiscoverStateUnit;
4282
4474
 
4283
4475
  interface EntityTagsStateUnit extends StateUnit {
4284
4476
  browse: ShellStateUnit;
4285
- entityTypes$: Observable<string[]>;
4286
- isLoading$: Observable<boolean>;
4477
+ entityTypes: ListState<string[]>;
4287
4478
  newTag$: Observable<string>;
4288
4479
  error$: Observable<string>;
4289
4480
  isAdding$: Observable<boolean>;
4290
4481
  setNewTag(value: string): void;
4291
4482
  addTag(): Promise<void>;
4292
4483
  }
4293
- declare function createEntityTagsStateUnit(client: SemiontClient, browse: ShellStateUnit): EntityTagsStateUnit;
4484
+ declare function createEntityTagsStateUnit(session: SemiontSession, browse: ShellStateUnit): EntityTagsStateUnit;
4294
4485
 
4295
4486
  /**
4296
4487
  * `ShellStateUnit` is app-scoped — it owns toolbar panel state and lives on
@@ -4319,8 +4510,17 @@ declare function useShellStateUnit(): ShellStateUnit;
4319
4510
  * ready yet (e.g. `semiont?.browse.events(rUri)` when the active session is
4320
4511
  * still loading). In that case the hook is a no-op and returns undefined.
4321
4512
  * - Unsubscribes automatically on unmount or when `obs$` changes.
4513
+ * - A source ERROR is terminal absence: the hook keeps its last value and
4514
+ * reports the reason. It does not surface the error as state — a hook whose
4515
+ * whole contract is "the current value" has nowhere to put one. Callers that
4516
+ * must RENDER a failure need it modelled by the thing they observe (see
4517
+ * `createResourceLoaderStateUnit`'s `error$`); this handler exists so the
4518
+ * error is not left unhandled, which RxJS rethrows asynchronously — the
4519
+ * `Uncaught BusRequestError` seen in the field whenever a cache key
4520
+ * exhausted its B14 retry with nothing stored (B15).
4521
+ * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md
4322
4522
  */
4323
4523
  declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
4324
4524
 
4325
- export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminExchangePage, AdminSecurityPage, AdminUsersPage, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistProgress, AssistSection, AssistShell, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, EntityTagsPage, EntityTypeBadges, ErrorBoundary, ExportCard, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageBrowseRenderer, ImageURLSchema, ImageViewer, ImportCard, ImportProgress, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LinkedDataPage, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PdfBrowseRenderer, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, TextBrowseRenderer, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, annotatorKeyForMotivation, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, defaultBrowseRenderers, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKBDiscovery, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMediaToken, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePendingCreation, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceGather, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
4326
- export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AnnotatorKey, AssistProgressProps, AssistProgressTranslations, AssistShellProps, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, BrowseMediaRenderers, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, ExchangeStateUnit, ExportCardProps, ExportCardTranslations, HoverEmitterProps, ImportCardProps, ImportCardTranslations, ImportPreview, ImportProgressProps, ImportProgressTranslations, KBDiscoveryOptions, KBDiscoveryResult, KeyboardShortcut, LinkComponentProps, LinkedDataPageProps, LinkedDataPageTranslations, MediaRendererProps, Motivation$7 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, PendingCreation, RecentDocumentsPageProps, ReferenceData, ReferenceHover, ReferenceWizardModalProps, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGatherOptions, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceSearchModalProps, ResourceViewerPageProps, ResourceViewerPageStateUnit, RouteBuilder, SaveResourceParams$1 as SaveResourceParams, SearchModalProps, SelectionMotivation, SelectorType, SemiontProviderProps, SemiontResource$1 as SemiontResource, SessionStateUnit, ShadowToken, ShapeType, ShellStateUnit, ShellStateUnitOptions, SignInFormProps, SignUpFormProps, SimpleNavigationItem, SimpleNavigationProps, SortableResourceTabProps, SpacingToken, TagSchemasPageProps, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseMediaTokenResult, UseResourceContentResult, UseResourceGatherResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };
4525
+ export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminExchangePage, AdminSecurityPage, AdminUsersPage, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistProgress, AssistSection, AssistShell, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, EntityTagsPage, EntityTypeBadges, ErrorBoundary, ExportCard, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageAnnotateRenderer, ImageBrowseRenderer, ImageURLSchema, ImageViewer, ImportCard, ImportProgress, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LineNumbersProvider, LinkedDataPage, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PdfAnnotateRenderer, PdfBrowseRenderer, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, TextAnnotateRenderer, TextBrowseRenderer, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, annotatorKeyForMotivation, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, defaultAnnotateRenderers, defaultBrowseRenderers, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKBDiscovery, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMediaToken, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePendingCreation, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceGather, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useSessionStateUnit, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
4526
+ export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotateMediaRendererProps, AnnotateMediaRenderers, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AnnotatorKey, AssistProgressProps, AssistProgressTranslations, AssistShellProps, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, BrowseMediaRenderers, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, ExchangeStateUnit, ExportCardProps, ExportCardTranslations, HoverEmitterProps, ImportCardProps, ImportCardTranslations, ImportPreview, ImportProgressProps, ImportProgressTranslations, KBDiscoveryOptions, KBDiscoveryResult, KeyboardShortcut, LinkComponentProps, LinkedDataPageProps, LinkedDataPageTranslations, MediaRendererProps, Motivation$7 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, PendingCreation, RecentDocumentsPageProps, ReferenceData, ReferenceHover, ReferenceWizardModalProps, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGatherOptions, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceSearchModalProps, ResourceViewerPageProps, ResourceViewerPageStateUnit, RouteBuilder, SaveResourceParams$1 as SaveResourceParams, SearchModalProps, SelectionMotivation, SelectorType, SemiontProviderProps, SemiontResource$1 as SemiontResource, SessionStateUnit, ShadowToken, ShapeType, ShellStateUnit, ShellStateUnitOptions, SignInFormProps, SignUpFormProps, SimpleNavigationItem, SimpleNavigationProps, SortableResourceTabProps, SpacingToken, TagSchemasPageProps, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseMediaTokenResult, UseResourceContentResult, UseResourceGatherResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };