@semiont/react-ui 0.5.1 → 0.5.2

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 (56) hide show
  1. package/README.md +13 -0
  2. package/dist/{chunk-4NOUO3W6.mjs → chunk-7VWNZ5YX.mjs} +5032 -2876
  3. package/dist/chunk-7VWNZ5YX.mjs.map +1 -0
  4. package/dist/index.d.mts +292 -25
  5. package/dist/index.mjs +1021 -332
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/test-utils.d.mts +1 -1
  8. package/dist/test-utils.mjs +4 -2352
  9. package/dist/test-utils.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/src/components/StatusDisplay.tsx +1 -1
  12. package/src/components/modals/PermissionDeniedModal.tsx +2 -2
  13. package/src/components/modals/SessionExpiredModal.tsx +4 -4
  14. package/src/components/resource/panels/AssessmentPanel.tsx +4 -0
  15. package/src/components/resource/panels/AssistSection.tsx +10 -1
  16. package/src/components/resource/panels/CollaborationPanel.tsx +1 -1
  17. package/src/components/resource/panels/CommentsPanel.tsx +4 -0
  18. package/src/components/resource/panels/HighlightPanel.tsx +4 -0
  19. package/src/components/resource/panels/ReferencesPanel.tsx +11 -0
  20. package/src/components/resource/panels/TaggingPanel.tsx +10 -0
  21. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +11 -1
  22. package/src/components/resource/panels/__tests__/ReferencesPanel.observable-flow.test.tsx +2 -2
  23. package/src/features/admin-devops/components/AdminDevOpsPage.tsx +1 -1
  24. package/src/features/admin-exchange/components/AdminExchangePage.tsx +1 -1
  25. package/src/features/admin-exchange/components/ImportCard.tsx +1 -1
  26. package/src/features/admin-exchange/state/__tests__/exchange-state-unit.test.ts +171 -0
  27. package/src/features/admin-exchange/state/exchange-state-unit.ts +131 -0
  28. package/src/features/admin-security/components/AdminSecurityPage.tsx +1 -1
  29. package/src/features/admin-security/state/__tests__/admin-security-state-unit.test.ts +68 -0
  30. package/src/features/admin-security/state/admin-security-state-unit.ts +46 -0
  31. package/src/features/admin-users/components/AdminUsersPage.tsx +1 -1
  32. package/src/features/admin-users/state/__tests__/admin-users-state-unit.test.ts +86 -0
  33. package/src/features/admin-users/state/admin-users-state-unit.ts +73 -0
  34. package/src/features/auth-welcome/state/__tests__/welcome-state-unit.test.ts +86 -0
  35. package/src/features/auth-welcome/state/welcome-state-unit.ts +44 -0
  36. package/src/features/moderate-entity-tags/components/EntityTagsPage.tsx +1 -1
  37. package/src/features/moderate-entity-tags/state/__tests__/entity-tags-state-unit.test.ts +102 -0
  38. package/src/features/moderate-entity-tags/state/entity-tags-state-unit.ts +64 -0
  39. package/src/features/moderate-recent/components/RecentDocumentsPage.tsx +1 -1
  40. package/src/features/moderate-tag-schemas/components/TagSchemasPage.tsx +1 -1
  41. package/src/features/moderation-linked-data/components/LinkedDataPage.tsx +1 -1
  42. package/src/features/resource-compose/__tests__/UploadProgressBar.test.tsx +225 -0
  43. package/src/features/resource-compose/components/ResourceComposePage.tsx +19 -4
  44. package/src/features/resource-compose/components/UploadProgressBar.tsx +94 -0
  45. package/src/features/resource-compose/state/__tests__/compose-page-state-unit.test.ts +187 -0
  46. package/src/features/resource-compose/state/compose-page-state-unit.ts +209 -0
  47. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +1 -1
  48. package/src/features/resource-discovery/state/__tests__/discover-state-unit.test.ts +76 -0
  49. package/src/features/resource-discovery/state/discover-state-unit.ts +54 -0
  50. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +4 -2
  51. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +36 -32
  52. package/src/features/resource-viewer/state/__tests__/resource-loader-state-unit.test.ts +46 -0
  53. package/src/features/resource-viewer/state/__tests__/resource-viewer-page-state-unit.test.ts +203 -0
  54. package/src/features/resource-viewer/state/resource-loader-state-unit.ts +26 -0
  55. package/src/features/resource-viewer/state/resource-viewer-page-state-unit.ts +180 -0
  56. package/dist/chunk-4NOUO3W6.mjs.map +0 -1
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, EventMap, AnnotationId, StoredEventLike, ConnectionState, GatheredContext } from '@semiont/core';
1
+ import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, EventMap, AnnotationId, StoredEventLike, ConnectionState, GatheredContext, BackendDownload, ProgressEvent, AccessToken } from '@semiont/core';
2
2
  export { Annotation } from '@semiont/core';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as React$1 from 'react';
@@ -7,8 +7,8 @@ import { T as TranslationManager } from './TranslationManager-9Xj3MIWQ.mjs';
7
7
  import * as _codemirror_state from '@codemirror/state';
8
8
  import { HighlightStyle } from '@codemirror/language';
9
9
  import { WidgetType } from '@codemirror/view';
10
- import { ViewModel, SemiontBrowser, SessionStorage, SemiontSession, OpenResource, ImportPreview, CloneData, ReferenceData, ShellVM } from '@semiont/sdk';
11
- export { ActiveJob, AdminSecurityVM, AdminUsersVM, AnnotationGroups, BeckonVM, COMMON_PANELS, CloneData, ComposeMode, ComposePageVM, ComposeParams, DiscoverVM, EntityTagsVM, ExchangeVM, GatherVM, GenerateDocumentOptions, HOVER_DELAY_MS, HoverHandlers, ImportPreview, Job, JobAssignment, JobClaimAdapter, JobClaimAdapterOptions, JobQueueVM, MarkVM, MatchVM, PendingAnnotation, RESOURCE_PANELS, ReferenceData, ResourceLoaderVM, ResourceViewerPageVM, SaveResourceParams, SearchPipeline, SearchPipelineOptions, SearchState, SessionVM, ShellVM, ShellVMOptions, ToolbarPanelType, WelcomeVM, WizardState, YieldVM, createAdminSecurityVM, createAdminUsersVM, createBeckonVM, createComposePageVM, createDiscoverVM, createEntityTagsVM, createExchangeVM, createGatherVM, createHoverHandlers, createJobClaimAdapter, createJobQueueVM, createMarkVM, createMatchVM, createResourceLoaderVM, createResourceViewerPageVM, createSearchPipeline, createSessionVM, createShellVM, createWelcomeVM, createYieldVM } from '@semiont/sdk';
10
+ import { StateUnit, SemiontBrowser, SessionStorage, SessionFactory, SemiontSession, OpenResource, UploadProgress, SemiontClient, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry, SearchPipeline } from '@semiont/sdk';
11
+ export { BeckonStateUnit, GatherStateUnit, GenerateDocumentOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
12
12
  import { TagSchema } from '@semiont/ontology';
13
13
  export { TAG_SCHEMAS, TagCategory, TagSchema, getAllTagSchemas, getSchemaCategory as getTagCategory, getTagSchema, getTagSchemasByDomain, isValidCategory } from '@semiont/ontology';
14
14
  import { Observable } from 'rxjs';
@@ -139,7 +139,7 @@ interface DeleteAnnotationParams {
139
139
  * function useAnnotationManager(client: SemiontClient): AnnotationManager {
140
140
  * return {
141
141
  * markAnnotation: async (params) => {
142
- * const result = await client.mark.annotation(params.rUri, {...});
142
+ * const result = await client.mark.annotation({ target: { source: params.rUri, ... }, ... });
143
143
  * return result.annotation;
144
144
  * },
145
145
  * deleteAnnotation: async (params) => {
@@ -558,7 +558,7 @@ declare const OAuthUserSchema: {
558
558
  */
559
559
  declare function sanitizeImageURL(url: string): string | null;
560
560
 
561
- declare function useViewModel<VM extends ViewModel>(factory: () => VM): VM;
561
+ declare function useStateUnit<T extends StateUnit>(factory: () => T): T;
562
562
 
563
563
  /**
564
564
  * Creates a debounced version of a callback function
@@ -806,11 +806,15 @@ interface UseResourceContentResult {
806
806
  declare function useResourceContent(rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
807
807
 
808
808
  interface SemiontProviderProps {
809
- /** Inject a specific browser (tests). Omit in production. */
809
+ /** Inject a fully-constructed browser (tests, embedded hosts that build their own). Omit to use the default. */
810
810
  browser?: SemiontBrowser;
811
+ /** Override the default `WebBrowserStorage`. Useful for non-browser hosts (Electron/Tauri filesystem-backed adapters). */
812
+ storage?: SessionStorage;
813
+ /** Override the default HTTP session factory. Useful for in-process or future non-HTTP transports. */
814
+ sessionFactory?: SessionFactory;
811
815
  children: ReactNode;
812
816
  }
813
- declare function SemiontProvider({ browser, children }: SemiontProviderProps): react_jsx_runtime.JSX.Element;
817
+ declare function SemiontProvider({ browser, storage, sessionFactory, children }: SemiontProviderProps): react_jsx_runtime.JSX.Element;
814
818
  declare function useSemiont(): SemiontBrowser;
815
819
 
816
820
  /**
@@ -847,7 +851,7 @@ interface AnnotationProviderProps {
847
851
  * function useAnnotationManager(client: SemiontClient): AnnotationManager {
848
852
  * return {
849
853
  * markAnnotation: async (params) => {
850
- * const result = await client.mark.annotation(params.rUri, {
854
+ * const result = await client.mark.annotation({
851
855
  * motivation: params.motivation,
852
856
  * target: { source: params.rUri, selector: params.selector },
853
857
  * body: params.body,
@@ -1351,10 +1355,10 @@ declare function KeyboardShortcutsHelpModal({ isOpen, onClose }: KeyboardShortcu
1351
1355
 
1352
1356
  /**
1353
1357
  * Modal that surfaces when a 403 forbidden error is reported via
1354
- * `notifyPermissionDenied` (called from QueryCache.onError).
1358
+ * the active session's `signals.notifyPermissionDenied(...)`.
1355
1359
  *
1356
1360
  * Reads `permissionDeniedAt$` and `permissionDeniedMessage$` from the
1357
- * active `FrontendSessionSignals`. The signals instance clears the
1361
+ * active `SessionSignals`. The signals instance clears the
1358
1362
  * flag when the user dismisses the modal. Modal state lives on
1359
1363
  * signals (not the session itself) so headless sessions
1360
1364
  * (workers/CLIs) don't carry dead observables.
@@ -1362,11 +1366,11 @@ declare function KeyboardShortcutsHelpModal({ isOpen, onClose }: KeyboardShortcu
1362
1366
  declare function PermissionDeniedModal(): react_jsx_runtime.JSX.Element;
1363
1367
 
1364
1368
  /**
1365
- * Modal that surfaces when the active KB's session expires (a 401 from
1366
- * either the session's own JWT validation or from any React Query call
1367
- * via the QueryCache.onError handler).
1369
+ * Modal that surfaces when the active KB's session expires (a 401
1370
+ * surfaced by the session's own JWT validation or by the host's
1371
+ * error-routing path).
1368
1372
  *
1369
- * Reads `sessionExpiredAt$` from the active `FrontendSessionSignals`.
1373
+ * Reads `sessionExpiredAt$` from the active `SessionSignals`.
1370
1374
  * When the user dismisses the modal, the signals instance clears the
1371
1375
  * flag. Modal state lives on signals (not the session itself) so
1372
1376
  * headless sessions (workers/CLIs) don't carry dead observables.
@@ -1512,6 +1516,8 @@ interface AssessmentPanelProps {
1512
1516
  isAssisting?: boolean;
1513
1517
  progress?: JobProgress$6 | null;
1514
1518
  locale?: string;
1519
+ /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
1520
+ sourceLanguage?: string;
1515
1521
  annotateMode?: boolean;
1516
1522
  scrollToAnnotationId?: string | null;
1517
1523
  onScrollCompleted?: () => void;
@@ -1524,12 +1530,12 @@ interface AssessmentPanelProps {
1524
1530
  * @emits mark:cancel-pending - Cancel pending assessment annotation. Payload: undefined
1525
1531
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1526
1532
  */
1527
- declare function AssessmentPanel({ annotations, pendingAnnotation, isAssisting, progress, locale, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: AssessmentPanelProps): react_jsx_runtime.JSX.Element;
1533
+ declare function AssessmentPanel({ annotations, pendingAnnotation, isAssisting, progress, locale, sourceLanguage, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: AssessmentPanelProps): react_jsx_runtime.JSX.Element;
1528
1534
 
1529
1535
  interface Props$3 {
1530
1536
  /**
1531
1537
  * Connection state from `client.actor.state$`. See
1532
- * `packages/api-client/src/view-models/domain/actor-vm.ts`.
1538
+ * `packages/api-client/src/state/domain/actor-state-unit.ts`.
1533
1539
  *
1534
1540
  * UI mapping:
1535
1541
  * `open` | `reconnecting` | `initial` | `connecting`
@@ -1573,6 +1579,8 @@ interface CommentsPanelProps {
1573
1579
  isAssisting?: boolean;
1574
1580
  progress?: JobProgress$5 | null;
1575
1581
  locale?: string;
1582
+ /** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
1583
+ sourceLanguage?: string;
1576
1584
  scrollToAnnotationId?: string | null;
1577
1585
  onScrollCompleted?: () => void;
1578
1586
  hoveredAnnotationId?: string | null;
@@ -1584,13 +1592,16 @@ interface CommentsPanelProps {
1584
1592
  * @emits mark:cancel-pending - Cancel pending comment annotation. Payload: undefined
1585
1593
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1586
1594
  */
1587
- declare function CommentsPanel({ annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): react_jsx_runtime.JSX.Element;
1595
+ declare function CommentsPanel({ annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): react_jsx_runtime.JSX.Element;
1588
1596
 
1589
1597
  type JobProgress$4 = components['schemas']['JobProgress'];
1590
1598
  interface AssistSectionProps {
1591
1599
  annotationType: 'highlight' | 'assessment' | 'comment';
1592
1600
  isAssisting: boolean;
1601
+ /** User UI locale — written into the annotation body's `language` field for comment/assessment. */
1593
1602
  locale?: string;
1603
+ /** BCP-47 tag of the resource being analyzed. Forwarded to the prompt so the LLM analyzes non-English source correctly. */
1604
+ sourceLanguage?: string;
1594
1605
  progress?: JobProgress$4 | null | undefined;
1595
1606
  }
1596
1607
  /**
@@ -1605,7 +1616,7 @@ interface AssistSectionProps {
1605
1616
  * @emits mark:assist-request - Start assist for annotation type. Payload: { motivation: Motivation, options: { instructions?: string, tone?: string, density?: number } }
1606
1617
  * @emits mark:progress-dismiss - Dismiss the annotation progress display
1607
1618
  */
1608
- declare function AssistSection({ annotationType, isAssisting, locale, progress, }: AssistSectionProps): react_jsx_runtime.JSX.Element;
1619
+ declare function AssistSection({ annotationType, isAssisting, locale, sourceLanguage, progress, }: AssistSectionProps): react_jsx_runtime.JSX.Element;
1609
1620
 
1610
1621
  interface HighlightEntryProps {
1611
1622
  highlight: Annotation;
@@ -1630,6 +1641,8 @@ interface HighlightPanelProps {
1630
1641
  scrollToAnnotationId?: string | null;
1631
1642
  onScrollCompleted?: () => void;
1632
1643
  hoveredAnnotationId?: string | null;
1644
+ /** BCP-47 tag of the resource being analyzed — forwarded to the assist call so the LLM analyzes non-English source correctly. */
1645
+ sourceLanguage?: string;
1633
1646
  }
1634
1647
  /**
1635
1648
  * Panel for managing highlight annotations with auto-creation
@@ -1637,7 +1650,7 @@ interface HighlightPanelProps {
1637
1650
  * @emits mark:create - Create new highlight annotation (auto-triggered). Payload: { motivation: 'highlighting', selector: Selector | Selector[], body: Body[] }
1638
1651
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1639
1652
  */
1640
- declare function HighlightPanel({ annotations, pendingAnnotation, isAssisting, progress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: HighlightPanelProps): react_jsx_runtime.JSX.Element;
1653
+ declare function HighlightPanel({ annotations, pendingAnnotation, isAssisting, progress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, sourceLanguage, }: HighlightPanelProps): react_jsx_runtime.JSX.Element;
1641
1654
 
1642
1655
  type SemiontResource$1 = components['schemas']['ResourceDescriptor'];
1643
1656
  interface Props$2 {
@@ -1691,6 +1704,10 @@ interface Props$1 {
1691
1704
  scrollToAnnotationId?: string | null;
1692
1705
  onScrollCompleted?: () => void;
1693
1706
  hoveredAnnotationId?: string | null;
1707
+ /** User UI locale — stamped on the unresolved-reference body's `language` field. */
1708
+ locale?: string;
1709
+ /** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
1710
+ sourceLanguage?: string;
1694
1711
  }
1695
1712
  /**
1696
1713
  * Panel for managing reference annotations with entity type annotation
@@ -1700,7 +1717,7 @@ interface Props$1 {
1700
1717
  * @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
1701
1718
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1702
1719
  */
1703
- declare function ReferencesPanel({ annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: Props$1): react_jsx_runtime.JSX.Element;
1720
+ declare function ReferencesPanel({ annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): react_jsx_runtime.JSX.Element;
1704
1721
 
1705
1722
  type Agent = components['schemas']['Agent'];
1706
1723
  interface Props {
@@ -1759,6 +1776,10 @@ interface TaggingPanelProps {
1759
1776
  scrollToAnnotationId?: string | null;
1760
1777
  onScrollCompleted?: () => void;
1761
1778
  hoveredAnnotationId?: string | null;
1779
+ /** User UI locale — stamped on the tagging body's `language` field. */
1780
+ locale?: string;
1781
+ /** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
1782
+ sourceLanguage?: string;
1762
1783
  }
1763
1784
  /**
1764
1785
  * Panel for managing tag annotations with schema-based annotation
@@ -1768,7 +1789,7 @@ interface TaggingPanelProps {
1768
1789
  * @emits mark:create - Create new tag annotation. Payload: { motivation: 'tagging', selector: Selector | Selector[], body: Body[] }
1769
1790
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1770
1791
  */
1771
- declare function TaggingPanel({ annotations, annotateMode, isAssisting, progress, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: TaggingPanelProps): react_jsx_runtime.JSX.Element;
1792
+ declare function TaggingPanel({ annotations, annotateMode, isAssisting, progress, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: TaggingPanelProps): react_jsx_runtime.JSX.Element;
1772
1793
 
1773
1794
  type JobProgress = components['schemas']['JobProgress'];
1774
1795
 
@@ -1805,6 +1826,12 @@ interface UnifiedAnnotationsPanelProps {
1805
1826
  onScrollCompleted?: () => void;
1806
1827
  hoveredAnnotationId?: string | null;
1807
1828
  locale?: string;
1829
+ /**
1830
+ * BCP-47 tag of the resource being analyzed (source-resource locale).
1831
+ * Independent from `locale` — a German user can analyze a French source
1832
+ * and get German bodies back. Fed into detection prompts.
1833
+ */
1834
+ sourceLanguage?: string;
1808
1835
  Link: React__default.ComponentType<LinkComponentProps>;
1809
1836
  routes: RouteBuilder;
1810
1837
  }
@@ -2594,6 +2621,64 @@ interface ExportCardProps {
2594
2621
  }
2595
2622
  declare function ExportCard({ onExport, isExporting, translations: t }: ExportCardProps): react_jsx_runtime.JSX.Element;
2596
2623
 
2624
+ /**
2625
+ * ShellStateUnit — app-shell state: which toolbar panel is open, tab-bar
2626
+ * coordination helpers, scroll-to-annotation signals. Lives on
2627
+ * `SemiontBrowser`'s app-scoped bus (not the per-session client bus)
2628
+ * because panel toggles and shell chrome must work regardless of
2629
+ * whether a KB session is active.
2630
+ *
2631
+ * Channels: `panel:toggle`, `panel:open`, `panel:close`.
2632
+ */
2633
+
2634
+ type ToolbarPanelType = 'history' | 'info' | 'annotations' | 'settings' | 'collaboration' | 'user' | 'jsonld' | 'knowledge-base';
2635
+ declare const COMMON_PANELS: readonly ToolbarPanelType[];
2636
+ declare const RESOURCE_PANELS: readonly ToolbarPanelType[];
2637
+ interface ShellStateUnit extends StateUnit {
2638
+ activePanel$: Observable<ToolbarPanelType | null>;
2639
+ scrollToAnnotationId$: Observable<string | null>;
2640
+ panelInitialTab$: Observable<{
2641
+ tab: string;
2642
+ generation: number;
2643
+ } | null>;
2644
+ openPanel(panel: string): void;
2645
+ closePanel(): void;
2646
+ togglePanel(panel: string): void;
2647
+ onScrollCompleted(): void;
2648
+ }
2649
+ interface ShellStateUnitOptions {
2650
+ initialPanel?: ToolbarPanelType | null;
2651
+ onPanelChange?: (panel: ToolbarPanelType | null) => void;
2652
+ }
2653
+ declare function createShellStateUnit(browser: SemiontBrowser, options?: ShellStateUnitOptions): ShellStateUnit;
2654
+
2655
+ interface ImportPreview {
2656
+ format: string;
2657
+ version: number;
2658
+ sourceUrl: string;
2659
+ stats: Record<string, number>;
2660
+ }
2661
+ interface ExchangeStateUnit extends StateUnit {
2662
+ browse: ShellStateUnit;
2663
+ selectedFile$: Observable<File | null>;
2664
+ preview$: Observable<ImportPreview | null>;
2665
+ importPhase$: Observable<string | null>;
2666
+ importMessage$: Observable<string | undefined>;
2667
+ importResult$: Observable<Record<string, unknown> | undefined>;
2668
+ isExporting$: Observable<boolean>;
2669
+ isImporting$: Observable<boolean>;
2670
+ selectFile(file: File): void;
2671
+ cancelImport(): void;
2672
+ doExport(): Promise<{
2673
+ blob: Blob;
2674
+ filename: string;
2675
+ }>;
2676
+ doImport(): Promise<void>;
2677
+ }
2678
+ declare function createExchangeStateUnit(browse: ShellStateUnit, exportFn: (params?: {
2679
+ includeArchived?: boolean;
2680
+ }) => Promise<BackendDownload>, importFn: (file: File) => Observable<ProgressEvent>): ExchangeStateUnit;
2681
+
2597
2682
  interface ImportCardTranslations {
2598
2683
  title: string;
2599
2684
  description: string;
@@ -3063,6 +3148,59 @@ interface TagSchemasPageProps {
3063
3148
  }
3064
3149
  declare function TagSchemasPage({ schemas, isLoading, theme, showLineNumbers, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): react_jsx_runtime.JSX.Element;
3065
3150
 
3151
+ type ComposeMode = 'new' | 'clone' | 'reference';
3152
+ interface ComposeParams {
3153
+ mode?: string | undefined;
3154
+ token?: string | undefined;
3155
+ annotationUri?: string | undefined;
3156
+ sourceDocumentId?: string | undefined;
3157
+ name?: string | undefined;
3158
+ entityTypes?: string | undefined;
3159
+ storedContext?: string | undefined;
3160
+ }
3161
+ interface CloneData {
3162
+ sourceResource: ResourceDescriptor;
3163
+ sourceContent: string;
3164
+ }
3165
+ interface ReferenceData {
3166
+ annotationUri: string;
3167
+ sourceDocumentId: string;
3168
+ name: string;
3169
+ entityTypes: string[];
3170
+ }
3171
+ interface SaveResourceParams$1 {
3172
+ mode: ComposeMode;
3173
+ name: string;
3174
+ storageUri: string;
3175
+ content?: string;
3176
+ file?: File;
3177
+ format?: string;
3178
+ charset?: string;
3179
+ entityTypes?: string[];
3180
+ language: string;
3181
+ archiveOriginal?: boolean;
3182
+ annotationUri?: string;
3183
+ sourceDocumentId?: string;
3184
+ }
3185
+ interface ComposePageStateUnit extends StateUnit {
3186
+ browse: ShellStateUnit;
3187
+ mode$: Observable<ComposeMode>;
3188
+ loading$: Observable<boolean>;
3189
+ cloneData$: Observable<CloneData | null>;
3190
+ referenceData$: Observable<ReferenceData | null>;
3191
+ gatheredContext$: Observable<GatheredContext | null>;
3192
+ entityTypes$: Observable<string[]>;
3193
+ /**
3194
+ * Live upload-progress for the in-flight `save(...)` call. Emits the
3195
+ * full `UploadProgress` lifecycle (started → finished) while a save is
3196
+ * underway; resets to `null` between saves and after completion. UI
3197
+ * components can subscribe to render an upload-in-progress indicator.
3198
+ */
3199
+ uploadProgress$: Observable<UploadProgress | null>;
3200
+ save(params: SaveResourceParams$1): Promise<string>;
3201
+ }
3202
+ declare function createComposePageStateUnit(client: SemiontClient, browse: ShellStateUnit, params: ComposeParams, auth?: AccessToken): ComposePageStateUnit;
3203
+
3066
3204
  interface ResourceComposePageProps {
3067
3205
  mode: 'new' | 'clone' | 'reference';
3068
3206
  cloneData?: CloneData | null;
@@ -3076,6 +3214,13 @@ interface ResourceComposePageProps {
3076
3214
  activePanel: string | null;
3077
3215
  onSaveResource: (params: SaveResourceParams) => Promise<void>;
3078
3216
  onCancel: () => void;
3217
+ /**
3218
+ * Live upload-progress for the in-flight save. Resolved by the route
3219
+ * shell from `composeVM.uploadProgress$`. `null` between saves and
3220
+ * after completion. When non-null, the form disables Save and the
3221
+ * inline `<UploadProgressBar />` below the action buttons renders.
3222
+ */
3223
+ uploadProgress?: UploadProgress | null;
3079
3224
  translations: {
3080
3225
  title: string;
3081
3226
  titleEditClone: string;
@@ -3126,7 +3271,29 @@ interface SaveResourceParams {
3126
3271
  annotationUri?: string;
3127
3272
  sourceDocumentId?: string;
3128
3273
  }
3129
- declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, showLineNumbers, hoverDelayMs, activePanel, onSaveResource, onCancel, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): react_jsx_runtime.JSX.Element;
3274
+ declare function ResourceComposePage({ mode, cloneData, referenceData, gatheredContext, availableEntityTypes, initialLocale, theme, showLineNumbers, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): react_jsx_runtime.JSX.Element;
3275
+
3276
+ /**
3277
+ * Inline upload-progress affordance for the compose page.
3278
+ *
3279
+ * Subscribes (via prop) to a `UploadProgress | null` value derived from
3280
+ * `composeVM.uploadProgress$`. Renders nothing when null; renders an
3281
+ * indeterminate state on `started`; renders a labeled bar with byte
3282
+ * counts on `progress`; renders a brief "Uploaded" success state on
3283
+ * `finished` (cleared by the state unit's `null` push on complete).
3284
+ *
3285
+ * Designed to live below the Save button in the compose form so the
3286
+ * visual association with the action that triggered the upload is
3287
+ * direct. Uses the existing `.semiont-progress` styles in
3288
+ * `packages/react-ui/src/styles/core/progress.css`.
3289
+ */
3290
+
3291
+ interface UploadProgressBarProps {
3292
+ progress: UploadProgress | null;
3293
+ /** Optional label for the "starting" / "uploaded" lines. Defaults to "Upload". */
3294
+ label?: string;
3295
+ }
3296
+ declare function UploadProgressBar({ progress, label }: UploadProgressBarProps): React__default.ReactElement | null;
3130
3297
 
3131
3298
  interface ResourceDiscoveryPageProps {
3132
3299
  recentDocuments: ResourceDescriptor[];
@@ -3248,13 +3415,113 @@ interface HoverEmitterProps {
3248
3415
  }
3249
3416
  declare function useHoverEmitter(annotationId: AnnotationId, hoverDelayMs?: number): HoverEmitterProps;
3250
3417
 
3418
+ interface SessionStateUnit extends StateUnit {
3419
+ isLoggingOut$: Observable<boolean>;
3420
+ logout(): Promise<void>;
3421
+ }
3422
+ declare function createSessionStateUnit(client: SemiontClient): SessionStateUnit;
3423
+
3424
+ interface AnnotationGroups {
3425
+ highlights: Annotation[];
3426
+ comments: Annotation[];
3427
+ assessments: Annotation[];
3428
+ references: Annotation[];
3429
+ tags: Annotation[];
3430
+ }
3431
+ type StoredEventResponse = components['schemas']['StoredEventResponse'];
3432
+ interface WizardState {
3433
+ open: boolean;
3434
+ annotationId: string | null;
3435
+ resourceId: string | null;
3436
+ defaultTitle: string;
3437
+ entityTypes: string[];
3438
+ }
3439
+ interface ResourceViewerPageStateUnit extends StateUnit {
3440
+ beckon: BeckonStateUnit;
3441
+ browse: ShellStateUnit;
3442
+ mark: MarkStateUnit;
3443
+ gather: GatherStateUnit;
3444
+ yield: YieldStateUnit;
3445
+ annotations$: Observable<Annotation[]>;
3446
+ annotationGroups$: Observable<AnnotationGroups>;
3447
+ entityTypes$: Observable<string[]>;
3448
+ events$: Observable<StoredEventResponse[]>;
3449
+ referencedBy$: Observable<ReferencedByEntry[]>;
3450
+ content$: Observable<string>;
3451
+ contentLoading$: Observable<boolean>;
3452
+ mediaToken$: Observable<string | null>;
3453
+ wizard$: Observable<WizardState>;
3454
+ closeWizard(): void;
3455
+ }
3456
+ declare function createResourceViewerPageStateUnit(client: SemiontClient, resourceId: ResourceId, locale: string, browse: ShellStateUnit, options?: {
3457
+ mediaType?: string;
3458
+ }): ResourceViewerPageStateUnit;
3459
+
3460
+ interface ResourceLoaderStateUnit extends StateUnit {
3461
+ resource$: Observable<ResourceDescriptor | undefined>;
3462
+ isLoading$: Observable<boolean>;
3463
+ invalidate(): void;
3464
+ }
3465
+ declare function createResourceLoaderStateUnit(client: SemiontClient, resourceId: ResourceId): ResourceLoaderStateUnit;
3466
+
3467
+ interface AdminUsersStateUnit extends StateUnit {
3468
+ browse: ShellStateUnit;
3469
+ users$: Observable<unknown[]>;
3470
+ stats$: Observable<unknown | null>;
3471
+ usersLoading$: Observable<boolean>;
3472
+ statsLoading$: Observable<boolean>;
3473
+ updateUser(id: string, data: {
3474
+ isAdmin?: boolean;
3475
+ isActive?: boolean;
3476
+ }): Promise<void>;
3477
+ }
3478
+ declare function createAdminUsersStateUnit(client: SemiontClient, browse: ShellStateUnit): AdminUsersStateUnit;
3479
+
3480
+ interface AdminSecurityStateUnit extends StateUnit {
3481
+ browse: ShellStateUnit;
3482
+ providers$: Observable<unknown[]>;
3483
+ allowedDomains$: Observable<string[]>;
3484
+ isLoading$: Observable<boolean>;
3485
+ }
3486
+ declare function createAdminSecurityStateUnit(client: SemiontClient, browse: ShellStateUnit): AdminSecurityStateUnit;
3487
+
3488
+ interface WelcomeStateUnit extends StateUnit {
3489
+ userData$: Observable<{
3490
+ termsAcceptedAt?: string;
3491
+ } | null>;
3492
+ isProcessing$: Observable<boolean>;
3493
+ acceptTerms(): Promise<void>;
3494
+ }
3495
+ declare function createWelcomeStateUnit(client: SemiontClient): WelcomeStateUnit;
3496
+
3497
+ interface DiscoverStateUnit extends StateUnit {
3498
+ browse: ShellStateUnit;
3499
+ search: SearchPipeline<ResourceDescriptor>;
3500
+ recentResources$: Observable<ResourceDescriptor[]>;
3501
+ entityTypes$: Observable<string[]>;
3502
+ isLoadingRecent$: Observable<boolean>;
3503
+ }
3504
+ declare function createDiscoverStateUnit(client: SemiontClient, browse: ShellStateUnit): DiscoverStateUnit;
3505
+
3506
+ interface EntityTagsStateUnit extends StateUnit {
3507
+ browse: ShellStateUnit;
3508
+ entityTypes$: Observable<string[]>;
3509
+ isLoading$: Observable<boolean>;
3510
+ newTag$: Observable<string>;
3511
+ error$: Observable<string>;
3512
+ isAdding$: Observable<boolean>;
3513
+ setNewTag(value: string): void;
3514
+ addTag(): Promise<void>;
3515
+ }
3516
+ declare function createEntityTagsStateUnit(client: SemiontClient, browse: ShellStateUnit): EntityTagsStateUnit;
3517
+
3251
3518
  /**
3252
- * `ShellVM` is app-scoped — it owns toolbar panel state and lives on
3519
+ * `ShellStateUnit` is app-scoped — it owns toolbar panel state and lives on
3253
3520
  * the `SemiontBrowser`'s own bus. Unlike session-scoped VMs, this hook
3254
3521
  * does not need to wait for an active KB session; `useSemiont()`
3255
3522
  * always returns the module-scoped `SemiontBrowser` singleton.
3256
3523
  */
3257
- declare function useShellVM(): ShellVM;
3524
+ declare function useShellStateUnit(): ShellStateUnit;
3258
3525
 
3259
3526
  /**
3260
3527
  * Subscribe to an RxJS Observable and return its current value as React state.
@@ -3278,4 +3545,4 @@ declare function useShellVM(): ShellVM;
3278
3545
  */
3279
3546
  declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
3280
3547
 
3281
- export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, type AdminDevOpsPageProps, AdminExchangePage, type AdminExchangePageProps, type AdminExchangePageTranslations, AdminSecurityPage, type AdminSecurityPageProps, type AdminUser, type AdminUserStats, AdminUsersPage, type AdminUsersPageProps, AnnotateReferencesProgressWidget, AnnotateToolbar, AnnotateView, type AnnotationConfig, type AnnotationCreationHandler, type AnnotationHandlers, AnnotationHistory, type AnnotationManager, AnnotationOverlay, AnnotationProvider, type AnnotationProviderProps, type AnnotationUIState, type AnnotationsCollection, type Annotator, AssessmentEntry, AssessmentPanel, AssistSection, AsyncErrorBoundary, AuthErrorDisplay, type AuthErrorDisplayProps, type AvailableLocale, type BorderRadiusToken, BrowseView, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type ClickAction, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, type CollapsibleResourceNavigationProps, type ColorToken, CommentEntry, CommentsPanel, ComposeLoadingState, type ComposeLoadingStateProps, type CreateAnnotationParams, type CreateConfig, type DeleteAnnotationParams, type DetectionConfig, type DevOpsFeature, type DrawingMode, EntityTagsPage, type EntityTagsPageProps, EntityTypeBadges, ErrorBoundary, ExportCard, type ExportCardProps, type ExportCardTranslations, Footer, HighlightEntry, HighlightPanel, HistoryEvent, type HoverEmitterProps, ImageURLSchema, ImageViewer, ImportCard, type ImportCardProps, type ImportCardTranslations, ImportProgress, type ImportProgressProps, type ImportProgressTranslations, JsonLdPanel, JsonLdView, type KeyboardShortcut, KeyboardShortcutsHelpModal, LeftSidebar, type LinkComponentProps, LinkedDataPage, type LinkedDataPageProps, type LinkedDataPageTranslations, LiveRegionProvider, type Motivation$8 as Motivation, type NavigationItem, NavigationMenu, type NavigationMenuHelper, type NavigationProps, type OAuthProvider, type OAuthUser, OAuthUserSchema, ObservableLink, type ObservableLinkProps, type OverlayAnnotation, PageLayout, PanelHeader, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RecentDocumentsPage, type RecentDocumentsPageProps, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, type ReferenceWizardModalProps, 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, SearchModal, type SearchModalProps, SelectedTextDisplay, type SelectionMotivation, type SelectorType, SemiontBranding, SemiontFavicon, SemiontProvider, type SemiontProviderProps, type SemiontResource$2 as SemiontResource, SessionExpiredModal, SessionExpiryBanner, 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, SvgDrawingCanvas, TagEntry, TagSchemasPage, type TagSchemasPageProps, TaggingPanel, type TextSegment, type TextSelection, type Theme, ThemeProvider, ToastContainer, type ToastMessage, ToastProvider, type ToastType, Toolbar, type TransitionToken, TranslationManager, TranslationProvider, type TranslationProviderProps, type TypographyToken, type UICreateAnnotationParams, UnifiedAnnotationsPanel, UnifiedHeader, type UseResourceContentResult, UserMenuSkeleton, WebBrowserStorage, WelcomePage, type WelcomePageProps, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, cssVariables, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionExpiry, useShellVM, useTheme, useToast, useTranslations, useViewModel };
3548
+ export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, type AdminDevOpsPageProps, AdminExchangePage, type AdminExchangePageProps, type AdminExchangePageTranslations, AdminSecurityPage, type AdminSecurityPageProps, type AdminSecurityStateUnit, type AdminUser, type AdminUserStats, AdminUsersPage, type AdminUsersPageProps, type AdminUsersStateUnit, AnnotateReferencesProgressWidget, AnnotateToolbar, AnnotateView, type AnnotationConfig, type AnnotationCreationHandler, type AnnotationGroups, type AnnotationHandlers, AnnotationHistory, type AnnotationManager, AnnotationOverlay, AnnotationProvider, type AnnotationProviderProps, type AnnotationUIState, type AnnotationsCollection, type Annotator, AssessmentEntry, AssessmentPanel, AssistSection, AsyncErrorBoundary, AuthErrorDisplay, type AuthErrorDisplayProps, type AvailableLocale, type BorderRadiusToken, BrowseView, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, COMMON_PANELS, type ClickAction, type CloneData, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, type CollapsibleResourceNavigationProps, type ColorToken, CommentEntry, CommentsPanel, ComposeLoadingState, type ComposeLoadingStateProps, type ComposeMode, type ComposePageStateUnit, type ComposeParams, type CreateAnnotationParams, type CreateConfig, type DeleteAnnotationParams, type DetectionConfig, type DevOpsFeature, type DiscoverStateUnit, type DrawingMode, EntityTagsPage, type EntityTagsPageProps, type EntityTagsStateUnit, EntityTypeBadges, ErrorBoundary, type ExchangeStateUnit, ExportCard, type ExportCardProps, type ExportCardTranslations, Footer, HighlightEntry, HighlightPanel, HistoryEvent, type HoverEmitterProps, ImageURLSchema, ImageViewer, ImportCard, type ImportCardProps, type ImportCardTranslations, type ImportPreview, ImportProgress, type ImportProgressProps, type ImportProgressTranslations, JsonLdPanel, JsonLdView, type KeyboardShortcut, KeyboardShortcutsHelpModal, LeftSidebar, type LinkComponentProps, LinkedDataPage, type LinkedDataPageProps, type LinkedDataPageTranslations, LiveRegionProvider, type Motivation$8 as Motivation, type NavigationItem, NavigationMenu, type NavigationMenuHelper, type NavigationProps, type OAuthProvider, type OAuthUser, OAuthUserSchema, ObservableLink, type ObservableLinkProps, type OverlayAnnotation, PageLayout, PanelHeader, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, type RecentDocumentsPageProps, type ReferenceData, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, type ReferenceWizardModalProps, ReferencesPanel, ResizeHandle, type ResolvedTheme, ResourceAnnotationsProvider, ResourceCard, type ResourceCardProps, ResourceComposePage, type ResourceComposePageProps, ResourceDiscoveryPage, type ResourceDiscoveryPageProps, ResourceErrorState, type ResourceErrorStateProps, ResourceInfoPanel, type ResourceLoaderStateUnit, ResourceLoadingState, ResourceSearchModal, type ResourceSearchModalProps, ResourceTagsInline, ResourceViewer, ResourceViewerPage, type ResourceViewerPageProps, type ResourceViewerPageStateUnit, type RouteBuilder, type SaveResourceParams$1 as SaveResourceParams, SearchModal, type SearchModalProps, SelectedTextDisplay, type SelectionMotivation, type SelectorType, SemiontBranding, SemiontFavicon, SemiontProvider, type SemiontProviderProps, type SemiontResource$2 as SemiontResource, SessionExpiredModal, SessionExpiryBanner, type SessionStateUnit, SessionTimer, SettingsPanel, type ShadowToken, type ShapeType, type ShellStateUnit, type ShellStateUnitOptions, SignInForm, type SignInFormProps, SignUpForm, type SignUpFormProps, SimpleNavigation, type SimpleNavigationItem, type SimpleNavigationProps, SkipLinks, SortableResourceTab, type SortableResourceTabProps, type SpacingToken, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, type TagSchemasPageProps, TaggingPanel, type TextSegment, type TextSelection, type Theme, ThemeProvider, ToastContainer, type ToastMessage, ToastProvider, type ToastType, Toolbar, type ToolbarPanelType, type TransitionToken, TranslationManager, TranslationProvider, type TranslationProviderProps, type TypographyToken, type UICreateAnnotationParams, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, type UploadProgressBarProps, type UseResourceContentResult, UserMenuSkeleton, WebBrowserStorage, WelcomePage, type WelcomePageProps, type WelcomeStateUnit, type WizardState, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionExpiry, useShellStateUnit, useStateUnit, useTheme, useToast, useTranslations };