@ikonai/sdk-react-ui 1.8.0 → 1.11.0

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 (130) hide show
  1. package/account/use-account-removal.d.ts +37 -0
  2. package/account/use-account-removal.d.ts.map +1 -0
  3. package/app/boot-snapshot-variant.d.ts +2 -1
  4. package/app/boot-snapshot-variant.d.ts.map +1 -0
  5. package/app/connection-recovery.d.ts +1 -0
  6. package/app/connection-recovery.d.ts.map +1 -0
  7. package/app/connection-state-renderer.d.ts +6 -5
  8. package/app/connection-state-renderer.d.ts.map +1 -0
  9. package/app/feedback/feedback-controls.d.ts +24 -0
  10. package/app/feedback/feedback-controls.d.ts.map +1 -0
  11. package/app/feedback/feedback-form.d.ts +26 -0
  12. package/app/feedback/feedback-form.d.ts.map +1 -0
  13. package/app/feedback/platform-layer.d.ts +32 -0
  14. package/app/feedback/platform-layer.d.ts.map +1 -0
  15. package/app/feedback/use-ikon-feedback.d.ts +13 -0
  16. package/app/feedback/use-ikon-feedback.d.ts.map +1 -0
  17. package/app/ikon-app.d.ts +4 -3
  18. package/app/ikon-app.d.ts.map +1 -0
  19. package/app/index.d.ts +2 -0
  20. package/app/index.d.ts.map +1 -0
  21. package/app/use-ikon-app.d.ts +35 -9
  22. package/app/use-ikon-app.d.ts.map +1 -0
  23. package/app/use-ikon-debug.d.ts +3 -2
  24. package/app/use-ikon-debug.d.ts.map +1 -0
  25. package/auth/auth-context.d.ts +2 -1
  26. package/auth/auth-context.d.ts.map +1 -0
  27. package/auth/auth-service.d.ts +38 -5
  28. package/auth/auth-service.d.ts.map +1 -0
  29. package/auth/index.d.ts +5 -3
  30. package/auth/index.d.ts.map +1 -0
  31. package/auth/oauth-continuation.d.ts +16 -1
  32. package/auth/oauth-continuation.d.ts.map +1 -0
  33. package/auth/storage.d.ts +1 -0
  34. package/auth/storage.d.ts.map +1 -0
  35. package/auth/types.d.ts +19 -4
  36. package/auth/types.d.ts.map +1 -0
  37. package/auth/use-auth-guard.d.ts +1 -0
  38. package/auth/use-auth-guard.d.ts.map +1 -0
  39. package/auth/use-sso-sign-in.d.ts +18 -0
  40. package/auth/use-sso-sign-in.d.ts.map +1 -0
  41. package/base/base-div.d.ts +1 -0
  42. package/base/base-div.d.ts.map +1 -0
  43. package/base/base-module.d.ts +1 -0
  44. package/base/base-module.d.ts.map +1 -0
  45. package/consent/use-consent.d.ts +35 -0
  46. package/consent/use-consent.d.ts.map +1 -0
  47. package/debug/debug-overlay.d.ts +2 -1
  48. package/debug/debug-overlay.d.ts.map +1 -0
  49. package/feedback-form-BSy2olwD.js +511 -0
  50. package/hooks/index.d.ts +1 -0
  51. package/hooks/index.d.ts.map +1 -0
  52. package/hooks/use-ikon-reactive.d.ts +2 -1
  53. package/hooks/use-ikon-reactive.d.ts.map +1 -0
  54. package/hooks/use-reactive.d.ts +2 -1
  55. package/hooks/use-reactive.d.ts.map +1 -0
  56. package/hooks/use-toasts.d.ts +1 -0
  57. package/hooks/use-toasts.d.ts.map +1 -0
  58. package/i18n/i18n.d.ts +2 -1
  59. package/i18n/i18n.d.ts.map +1 -0
  60. package/i18n/index.d.ts +1 -0
  61. package/i18n/index.d.ts.map +1 -0
  62. package/ikon-ui-registry.d.ts +1 -0
  63. package/ikon-ui-registry.d.ts.map +1 -0
  64. package/ikon-ui.d.ts +3 -2
  65. package/ikon-ui.d.ts.map +1 -0
  66. package/index.d.ts +10 -7
  67. package/index.d.ts.map +1 -0
  68. package/index.js +2045 -1850
  69. package/inspect/inspect-overlay.d.ts +1 -0
  70. package/inspect/inspect-overlay.d.ts.map +1 -0
  71. package/media/audio-player.d.ts +1 -0
  72. package/media/audio-player.d.ts.map +1 -0
  73. package/media/media-module.d.ts +1 -0
  74. package/media/media-module.d.ts.map +1 -0
  75. package/media/use-media-capture.d.ts +2 -1
  76. package/media/use-media-capture.d.ts.map +1 -0
  77. package/media/use-sibling-client.d.ts +2 -1
  78. package/media/use-sibling-client.d.ts.map +1 -0
  79. package/media/video-canvas.d.ts +1 -0
  80. package/media/video-canvas.d.ts.map +1 -0
  81. package/media/video-stream-view.d.ts +3 -2
  82. package/media/video-stream-view.d.ts.map +1 -0
  83. package/motion/motion-controller.d.ts +2 -1
  84. package/motion/motion-controller.d.ts.map +1 -0
  85. package/package.json +1 -1
  86. package/parallax-view.d.ts +5 -4
  87. package/parallax-view.d.ts.map +1 -0
  88. package/renderer/component-library.d.ts +1 -0
  89. package/renderer/component-library.d.ts.map +1 -0
  90. package/renderer/index.d.ts +3 -1
  91. package/renderer/index.d.ts.map +1 -0
  92. package/renderer/lazy-resolver.d.ts +10 -0
  93. package/renderer/lazy-resolver.d.ts.map +1 -0
  94. package/renderer/types.d.ts +17 -5
  95. package/renderer/types.d.ts.map +1 -0
  96. package/renderer/ui-renderer.d.ts +6 -5
  97. package/renderer/ui-renderer.d.ts.map +1 -0
  98. package/renderer/use-root-view.d.ts +2 -1
  99. package/renderer/use-root-view.d.ts.map +1 -0
  100. package/renderer/use-ui-node.d.ts +2 -1
  101. package/renderer/use-ui-node.d.ts.map +1 -0
  102. package/renderer/use-ui-store.d.ts +2 -1
  103. package/renderer/use-ui-store.d.ts.map +1 -0
  104. package/shadertoy/shadertoy-gl.d.ts +1 -0
  105. package/shadertoy/shadertoy-gl.d.ts.map +1 -0
  106. package/shadertoy/shadertoy-module.d.ts +4 -3
  107. package/shadertoy/shadertoy-module.d.ts.map +1 -0
  108. package/shadertoy/shadertoy-renderer.d.ts +1 -1
  109. package/shadertoy/shadertoy-renderer.d.ts.map +1 -0
  110. package/shadertoy/shadertoy-type.d.ts +2 -0
  111. package/shadertoy/shadertoy-type.d.ts.map +1 -0
  112. package/shadertoy-renderer-Cq1lOXBs.js +428 -0
  113. package/shadertoy-type-Cs2WeCWV.js +15 -0
  114. package/shared/render-motion-letters.d.ts +1 -0
  115. package/shared/render-motion-letters.d.ts.map +1 -0
  116. package/surface.d.ts +10 -7
  117. package/surface.d.ts.map +1 -0
  118. package/theme/ikon-app.css +3 -1
  119. package/theme/ikon-auth.css +7 -5
  120. package/use-ikon-styles.d.ts +2 -1
  121. package/use-ikon-styles.d.ts.map +1 -0
  122. package/use-ikon-ui-stores.d.ts +2 -0
  123. package/use-ikon-ui-stores.d.ts.map +1 -0
  124. package/auth/auth-context.spec.d.ts +0 -1
  125. package/base/focus-hint-scroll.spec.d.ts +0 -1
  126. package/media/use-media-capture.spec.d.ts +0 -1
  127. package/media/use-sibling-client.spec.d.ts +0 -1
  128. package/media/video-stream-view.spec.d.ts +0 -1
  129. package/renderer/unresolved-node.spec.d.ts +0 -1
  130. package/vite.config.d.ts +0 -2
@@ -0,0 +1,37 @@
1
+ import { ScheduledUserRemoval } from '@ikonai/sdk';
2
+ export interface UseAccountRemovalOptions {
3
+ /**
4
+ * Backend API base, as `AuthConfig.backendUrl` carries it. Left out, the SDK derives it from the
5
+ * environment.
6
+ */
7
+ backendUrl?: string;
8
+ /**
9
+ * Whether to read the account's current removal schedule on mount. True by default; pass false
10
+ * for a screen that is mounted before the user can see it.
11
+ */
12
+ loadOnMount?: boolean;
13
+ }
14
+ export interface UseAccountRemovalResult {
15
+ /** The scheduled erasure, or null when none is scheduled. */
16
+ scheduledRemoval: ScheduledUserRemoval | null;
17
+ /** True while the account's current state is being read. */
18
+ isLoadingAccount: boolean;
19
+ /** True while a request or a cancellation is in flight. */
20
+ isSubmittingRemoval: boolean;
21
+ /** The last failure, in the backend's own words, or null. */
22
+ removalError: string | null;
23
+ /** Whether a signed-in, non-anonymous account exists to act on. A guest has nothing to erase. */
24
+ canRequestRemoval: boolean;
25
+ /** The grace period the erasure is scheduled after, in days. */
26
+ removalGraceDays: number;
27
+ requestAccountRemoval: () => Promise<void>;
28
+ cancelAccountRemoval: () => Promise<void>;
29
+ reloadAccountRemoval: () => Promise<void>;
30
+ }
31
+ /**
32
+ * The signed-in user's own right to erasure: what is scheduled, and the two calls that schedule it
33
+ * and take it back. Erasure runs after the backend's grace period ({@link USER_REMOVAL_GRACE_DAYS}
34
+ * days by default) and can be cancelled at any point until then.
35
+ */
36
+ export declare function useAccountRemoval(options?: UseAccountRemovalOptions): UseAccountRemovalResult;
37
+ //# sourceMappingURL=use-account-removal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-account-removal.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/account/use-account-removal.ts"],"names":[],"mappings":"AACA,OAAO,EAAgF,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGtI,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,6DAA6D;IAC7D,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,4DAA4D;IAC5D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,mBAAmB,EAAE,OAAO,CAAC;IAC7B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iGAAiG;IACjG,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAUD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,uBAAuB,CAqGjG"}
@@ -1,4 +1,4 @@
1
- import { BootSnapshotVariant } from '../../sdk/sdk-ui/src/index.ts';
1
+ import { BootSnapshotVariant } from '@ikonai/sdk-ui';
2
2
  /**
3
3
  * The one seed-axis rule shared by the early prefetch and the IkonUi construction in useIkonApp:
4
4
  * disabled stays disabled; a signed-in load resolves through the SignedInSeeds rules (the route
@@ -6,3 +6,4 @@ import { BootSnapshotVariant } from '../../sdk/sdk-ui/src/index.ts';
6
6
  * everything else resolves through the guest axis.
7
7
  */
8
8
  export declare function resolveBootSnapshotSeedVariant(bootSnapshot: boolean | undefined, signedInLikely: boolean): BootSnapshotVariant | false;
9
+ //# sourceMappingURL=boot-snapshot-variant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-snapshot-variant.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/boot-snapshot-variant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,EAAE,cAAc,EAAE,OAAO,GAAG,mBAAmB,GAAG,KAAK,CAMtI"}
@@ -25,3 +25,4 @@ export interface ConnectionRecoveryOptions {
25
25
  * app — so telling them to refresh is advice they cannot act on. The button is the affordance.
26
26
  */
27
27
  export declare function getConnectionRecovery({ isSessionExpired }: ConnectionRecoveryOptions): ConnectionRecovery;
28
+ //# sourceMappingURL=connection-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-recovery.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/connection-recovery.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAE7B,0EAA0E;IAC1E,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,EAAE,yBAAyB,GAAG,kBAAkB,CAYzG"}
@@ -1,7 +1,8 @@
1
- import { ConnectionState, IkonClient } from '../../sdk/sdk/src/index.ts';
1
+ import { ConnectionState, IkonClient } from '@ikonai/sdk';
2
2
  import { ReactNode } from 'react';
3
3
  import { IkonUiRegistry } from '../ikon-ui-registry';
4
4
  import { IkonUiStoreEntry } from '../surface';
5
+ import { DispatchActionOptions } from '../renderer';
5
6
  /**
6
7
  * Props passed to the renderConnected callback.
7
8
  */
@@ -9,7 +10,7 @@ export interface ConnectedRenderProps {
9
10
  stores: ReadonlyMap<string, IkonUiStoreEntry>;
10
11
  registry: IkonUiRegistry;
11
12
  client: IkonClient | null;
12
- onAction: (actionId: string, payload: unknown) => void;
13
+ onAction: (actionId: string, payload: unknown, options?: DispatchActionOptions) => void;
13
14
  isReconnecting: boolean;
14
15
  }
15
16
  /**
@@ -27,7 +28,7 @@ export interface ConnectionStateRendererProps {
27
28
  stores: ReadonlyMap<string, IkonUiStoreEntry> | undefined;
28
29
  registry: IkonUiRegistry | null;
29
30
  client: IkonClient | null;
30
- onAction: (actionId: string, payload: unknown) => void;
31
+ onAction: (actionId: string, payload: unknown, options?: DispatchActionOptions) => void;
31
32
  /**
32
33
  * @deprecated The runtime no longer emits `'idle'`; this callback never fires. The
33
34
  * prop stays for source-compatibility with apps that already pass it.
@@ -53,8 +54,7 @@ export interface ConnectionStateRendererProps {
53
54
  */
54
55
  renderOffline: () => ReactNode;
55
56
  /**
56
- * Render when offline with an error message attached. Full-page replacement.
57
- * Previously fired only for the dropped `'offlineError'` state; now fires when
57
+ * Render when offline with an error message attached. Full-page replacement. Fires when
58
58
  * `connectionState === 'offline'` and `error` (or `client.lastError`) is set.
59
59
  */
60
60
  renderError: (error: string | null) => ReactNode;
@@ -69,3 +69,4 @@ export interface ConnectionStateRendererProps {
69
69
  * work without changes when they upgrade the SDK.
70
70
  */
71
71
  export declare function ConnectionStateRenderer({ connectionState, error, isReady, isConnectingSlow, stores, registry, client, onAction, renderIdle: _renderIdle, renderConnecting, renderConnectingSlow, renderConnected, renderOffline, renderError, }: ConnectionStateRendererProps): ReactNode;
72
+ //# sourceMappingURL=connection-state-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-state-renderer.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/connection-state-renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxF,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,eAAe,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAExF;;;OAGG;IACH,UAAU,EAAE,MAAM,SAAS,CAAC;IAE5B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,SAAS,CAAC;IAElC;;;OAGG;IACH,oBAAoB,EAAE,MAAM,SAAS,CAAC;IAEtC;;;OAGG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,SAAS,CAAC;IAE5D;;OAEG;IACH,aAAa,EAAE,MAAM,SAAS,CAAC;IAE/B;;;OAGG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,eAAe,EACf,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,UAAU,EAAE,WAAW,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,EAAE,4BAA4B,GAAG,SAAS,CAkD1C"}
@@ -0,0 +1,24 @@
1
+ import { ConnectionState, FeedbackClientConfiguration, IkonClient } from '@ikonai/sdk';
2
+ import { ReactNode } from 'react';
3
+ export declare function preloadFeedbackForm(): Promise<typeof import('./feedback-form')>;
4
+ /** How long the client waits for the server-drawn sheet before it opens its own form. */
5
+ export declare const FEEDBACK_SHEET_TIMEOUT_MS = 4000;
6
+ export interface FeedbackControlsProps {
7
+ client: IkonClient | null;
8
+ /** The backend's feedback settings for this user; nothing is drawn without them. */
9
+ feedback: FeedbackClientConfiguration | null;
10
+ connectionState: ConnectionState;
11
+ /** True once the live app UI is on screen, which is when `?ikon-feedback` opens the sheet. */
12
+ isLive: boolean;
13
+ /** True while the server-drawn sheet has content. */
14
+ sheetOpen: boolean;
15
+ brandingShown: boolean;
16
+ }
17
+ /**
18
+ * The client-drawn half of the feedback overlay: the round button and the fallback form. A tap, or
19
+ * an app's own control through `IkonClient.requestFeedback`, asks the server to open its sheet; the
20
+ * form opens instead when that call fails, the connection is not live, or no sheet has arrived
21
+ * within {@link FEEDBACK_SHEET_TIMEOUT_MS}.
22
+ */
23
+ export declare function FeedbackControls({ client, feedback, connectionState, isLive, sheetOpen, brandingShown }: FeedbackControlsProps): ReactNode;
24
+ //# sourceMappingURL=feedback-controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-controls.d.ts","sourceRoot":"","sources":["../../../../../sdk/sdk-react-ui/src/app/feedback/feedback-controls.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgE,KAAK,SAAS,EAAkB,MAAM,OAAO,CAAC;AAQrH,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,cAAc,iBAAiB,CAAC,CAAC,CAE/E;AAED,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAY9C,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,oFAAoF;IACpF,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC7C,eAAe,EAAE,eAAe,CAAC;IACjC,8FAA8F;IAC9F,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,qBAAqB,GAAG,SAAS,CAkL1I"}
@@ -0,0 +1,26 @@
1
+ import { BackendAccess, FeedbackKind, ViewCaptureImage } from '@ikonai/sdk';
2
+ import { ReactNode } from 'react';
3
+ export declare const FEEDBACK_KIND_OPTIONS: ReadonlyArray<{
4
+ kind: FeedbackKind;
5
+ label: string;
6
+ }>;
7
+ export declare const FEEDBACK_DIALOG_Z_INDEX = 10001;
8
+ export declare const SCREENSHOT_WAIT_MS = 10000;
9
+ export interface FeedbackFormProps {
10
+ /** Where the report goes; null when this page has no user token for the backend. */
11
+ access: BackendAccess | null;
12
+ /** The capture taken when the user tapped; null when there is none. */
13
+ screenshot: Promise<ViewCaptureImage> | null;
14
+ appSession?: string;
15
+ clientSession?: string;
16
+ onClose: () => void;
17
+ /** Tells the owner whether the user has put anything into the form, so it is not closed from under them. */
18
+ onDirtyChange?: (dirty: boolean) => void;
19
+ }
20
+ /**
21
+ * The client-drawn report form, for when the overlay sheet cannot open — the app is down, the
22
+ * connection is not live, or the app has no UI. Posts straight to the backend. No voice: that needs
23
+ * the app server.
24
+ */
25
+ export declare function FeedbackForm({ access, screenshot, appSession, clientSession, onClose, onDirtyChange }: FeedbackFormProps): ReactNode;
26
+ //# sourceMappingURL=feedback-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-form.d.ts","sourceRoot":"","sources":["../../../../../sdk/sdk-react-ui/src/app/feedback/feedback-form.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkH,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3M,OAAO,EAAuG,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5I,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKtF,CAAC;AAOF,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAI7C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4GAA4G;IAC5G,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,iBAAiB,GAAG,SAAS,CAmSpI"}
@@ -0,0 +1,32 @@
1
+ import { IkonClient } from '@ikonai/sdk';
2
+ import { ReactNode } from 'react';
3
+ import { IkonUiRegistry } from '../../ikon-ui-registry';
4
+ import { DispatchActionOptions } from '../../renderer';
5
+ import { IkonUiStoreEntry } from '../../surface';
6
+ export declare const PLATFORM_LAYER_Z_INDEX = 9990;
7
+ /**
8
+ * True while any platform stream shows content. The server wraps every mount in a root and one
9
+ * content node, so a closed sheet is a root whose content nodes have no children, and the sheet is
10
+ * open once any content node has one.
11
+ */
12
+ export declare function isPlatformTreeOpen(stores: ReadonlyMap<string, IkonUiStoreEntry> | undefined): boolean;
13
+ /**
14
+ * Follows the platform streams' trees. The store map only changes when a stream appears or goes; a
15
+ * stream store notifies its store listeners only when the root itself changes, and a node listener
16
+ * fires only for the node whose own props or children changed. The sheet opening lands on a content
17
+ * node, so each content node under the root is followed as well.
18
+ */
19
+ export declare function usePlatformTreeOpen(stores: ReadonlyMap<string, IkonUiStoreEntry> | undefined): boolean;
20
+ export interface PlatformLayerProps {
21
+ stores: ReadonlyMap<string, IkonUiStoreEntry>;
22
+ registry: IkonUiRegistry;
23
+ client: IkonClient | null;
24
+ onAction?: (actionId: string, payload?: string, options?: DispatchActionOptions) => void;
25
+ open: boolean;
26
+ }
27
+ /**
28
+ * The `ikon.platform` surface: the server-drawn feedback sheet, stacked over the app. Hidden while
29
+ * the tree is empty so a closed overlay can never cover the app, whatever its root's own layout.
30
+ */
31
+ export declare function PlatformLayer({ stores, registry, client, onAction, open }: PlatformLayerProps): ReactNode;
32
+ //# sourceMappingURL=platform-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-layer.d.ts","sourceRoot":"","sources":["../../../../../sdk/sdk-react-ui/src/app/feedback/platform-layer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGrE,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAQ3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,GAAG,OAAO,CAYrG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,GAAG,OAAO,CA0BtG;AA+CD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACzF,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,kBAAkB,GAAG,SAAS,CAuBzG"}
@@ -0,0 +1,13 @@
1
+ import { IkonClient } from '@ikonai/sdk';
2
+ export interface IkonFeedback {
3
+ /** Whether this person is offered feedback; leave an app's own "Send feedback" control out when not. */
4
+ available: boolean;
5
+ /** Opens the feedback sheet as the platform's button does, screenshot included. False when it cannot. */
6
+ open: () => boolean;
7
+ }
8
+ /**
9
+ * For an app that places its own "Send feedback" control, with `[Feedback] Button = "none"` or next
10
+ * to the platform's button. Nothing opens without an `IkonApp` on the page to show the sheet.
11
+ */
12
+ export declare function useIkonFeedback(client: IkonClient | null): IkonFeedback;
13
+ //# sourceMappingURL=use-ikon-feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ikon-feedback.d.ts","sourceRoot":"","sources":["../../../../../sdk/sdk-react-ui/src/app/feedback/use-ikon-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,YAAY;IAC3B,wGAAwG;IACxG,SAAS,EAAE,OAAO,CAAC;IACnB,yGAAyG;IACzG,IAAI,EAAE,MAAM,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,YAAY,CAMvE"}
package/app/ikon-app.d.ts CHANGED
@@ -48,8 +48,9 @@ export interface IkonAppProps extends UseIkonAppResult {
48
48
  * />
49
49
  * ```
50
50
  *
51
- * Debug keyboard shortcuts (Ctrl+Shift+1..6, 0, E) are wired up automatically when SDK
52
- * debug mode is on (URL has `?ikon-debug=true`). See `useIkonDebug` for the full map.
53
- * No on-screen indicator is rendered for active overrides.
51
+ * Debug keyboard shortcuts are wired up automatically when SDK debug mode is on (URL has
52
+ * `?ikon-debug=true`); `useIkonDebug` holds the map. No on-screen indicator is rendered for
53
+ * active overrides.
54
54
  */
55
55
  export declare function IkonApp(props: IkonAppProps): ReactNode;
56
+ //# sourceMappingURL=ikon-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ikon-app.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/ikon-app.tsx"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAQvD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC;AAEjF,oFAAoF;AACpF,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC;AAEnF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;AAEjF,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,8EAA8E;IAC9E,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;CAC7C;AA4BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CA2EtD"}
package/app/index.d.ts CHANGED
@@ -2,4 +2,6 @@ export { ConnectionStateRenderer, type ConnectedRenderProps, type ConnectionStat
2
2
  export { useIkonApp, type IkonUiModuleRegistration, type UseIkonAppOptions, type UseIkonAppResult } from './use-ikon-app';
3
3
  export { IkonApp, type IkonAppProps, type ConnectingOverlayProp, type ReconnectingOverlayProp, type OfflineOverlayProp, type AccessDeniedScreenProp } from './ikon-app';
4
4
  export { useIkonDebug, type UseIkonDebugResult } from './use-ikon-debug';
5
+ export { useIkonFeedback, type IkonFeedback } from './feedback/use-ikon-feedback';
5
6
  export { getConnectionRecovery, type ConnectionRecovery, type ConnectionRecoveryKind, type ConnectionRecoveryOptions } from './connection-recovery';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,KAAK,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AACpI,OAAO,EAAE,UAAU,EAAE,KAAK,wBAAwB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1H,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACxK,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,6 +1,7 @@
1
- import { ConnectionState, IkonClient, TimeoutConfig, WebRTCTrackMapInfo } from '../../sdk/sdk/src/index.ts';
1
+ import { ConnectionState, FeedbackClientConfiguration, IkonClient, TimeoutConfig, WebRTCTrackMapInfo } from '@ikonai/sdk';
2
2
  import { RefObject } from 'react';
3
3
  import { AuthConfig, LoginMethod } from '../auth/types';
4
+ import { DispatchActionOptions } from '../renderer';
4
5
  import { IkonUiRegistry } from '../ikon-ui-registry';
5
6
  import { IkonUi } from '../ikon-ui';
6
7
  import { IkonUiStoreEntry } from '../surface';
@@ -37,13 +38,22 @@ export type IkonUiModuleRegistration = (registry: IkonUiRegistry) => void;
37
38
  */
38
39
  export declare function mergeConnectParameters(urlParameters: Record<string, string>, appParameters?: Record<string, string>): Record<string, string>;
39
40
  /**
40
- * Who a session is for, as opposed to what it presents to prove it.
41
- *
42
- * A browser access token is worth 15 minutes and is renewed roughly every 13, and a renewal is the
43
- * same person holding a fresher credential. Keying the connection on the token's value made every
44
- * renewal look like a different session, so a signed-in app tore its IkonClient down and rebuilt it
45
- * every renewal period on a perfectly healthy network. Keying on the subject instead leaves only a
46
- * genuine change of user — or of sign-in method — forcing a reconnect.
41
+ * Whether this tab may send the person to their IdP for a space that requires SSO. Once per window
42
+ * per connection: a sign-in the IdP refuses comes back to the same consumer session, which the space
43
+ * refuses again, and without this the two would bounce the browser between them forever.
44
+ */
45
+ export declare function claimSsoRedirect(connectionId: string, now?: number): boolean;
46
+ /**
47
+ * Forgets every redirect this tab claimed. Called once a connect succeeds: the trip to the IdP came
48
+ * back signed in, so no loop is under way, and a sign-in by another method minutes later must be sent
49
+ * to the IdP again rather than meet the guard as a dead end.
50
+ */
51
+ export declare function releaseSsoRedirectClaims(): void;
52
+ /**
53
+ * Who a session is for, as opposed to what it presents to prove it. A browser access token is
54
+ * renewed every few minutes, and a renewal is the same person holding a fresher credential, so the
55
+ * connection is keyed on the subject: only a genuine change of user, or of sign-in method, forces
56
+ * a reconnect.
47
57
  *
48
58
  * A token whose subject cannot be read falls back to the token itself: two credentials nobody can
49
59
  * identify must not be assumed to name the same person.
@@ -88,6 +98,16 @@ export interface UseIkonAppOptions {
88
98
  * Enable background audio playback on both desktop and mobile. Default: false
89
99
  */
90
100
  backgroundAudio?: boolean;
101
+ /**
102
+ * Passed to IkonClient: skip the browser convenience functions (theme, location, navigation,
103
+ * sound, downloads). Default: false
104
+ */
105
+ disableBrowserFunctions?: boolean;
106
+ /**
107
+ * Passed to IkonClient: keep the browser functions but skip the sound-effect ones and the
108
+ * gesture-driven audio unlock they install, for an app that plays its own audio. Default: false
109
+ */
110
+ disableSoundFunctions?: boolean;
91
111
  /**
92
112
  * Enable WebRTC for audio and video transport. Default: true
93
113
  */
@@ -199,7 +219,7 @@ export interface UseIkonAppResult {
199
219
  /**
200
220
  * Action handler for UI interactions.
201
221
  */
202
- onAction: (actionId: string, payload: unknown) => void;
222
+ onAction: (actionId: string, payload: unknown, options?: DispatchActionOptions) => void;
203
223
  /**
204
224
  * Whether the connection is ready to render UI.
205
225
  */
@@ -216,6 +236,11 @@ export interface UseIkonAppResult {
216
236
  * low-tier app creators by the connect handshake). Defaults to false until connected.
217
237
  */
218
238
  brandingRequired: boolean;
239
+ /**
240
+ * The feedback overlay settings for this user: present when the overlay is offered (by `/init`, or
241
+ * by the app server's `ikon.client.setFeedback`, which replaces it), null otherwise and until then.
242
+ */
243
+ feedback: FeedbackClientConfiguration | null;
219
244
  /**
220
245
  * True after `connectionState === 'connecting'` has lasted longer than the slow-connection
221
246
  * threshold (default 5s, configurable via `timeouts.slowConnectionThresholdMs`). The connecting
@@ -236,3 +261,4 @@ export interface UseIkonAppResult {
236
261
  * Encapsulates client creation, auth scenarios, UI registry setup, and state management.
237
262
  */
238
263
  export declare function useIkonApp(options: UseIkonAppOptions): UseIkonAppResult;
264
+ //# sourceMappingURL=use-ikon-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ikon-app.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/use-ikon-app.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ConnectionState } from '../../sdk/sdk/src/index.ts';
1
+ import { ConnectionState } from '@ikonai/sdk';
2
2
  import { UseIkonAppResult } from './use-ikon-app';
3
3
  /**
4
4
  * Result of useIkonDebug — same shape as the input `UseIkonAppResult` (so it can be spread
@@ -33,7 +33,7 @@ export interface UseIkonDebugResult {
33
33
  * `<IkonApp />` and want the same behavior.
34
34
  *
35
35
  * Shortcut map (all require Ctrl+Shift, `event.code`-based so layout-independent):
36
- * - Digit1 → force `connecting` (an internal 5s timer flips isConnectingSlow to true so you can see both phases without a second shortcut)
36
+ * - Digit1 → force `connecting` (an internal timer flips isConnectingSlow to true so you can see both phases without a second shortcut)
37
37
  * - Digit2 → force `connected`
38
38
  * - Digit3 → force `reconnecting`
39
39
  * - Digit4 → force `offline` (no error)
@@ -45,3 +45,4 @@ export interface UseIkonDebugResult {
45
45
  * - KeyE → toggle empty-stores override (simulates "initial connection never produced UI")
46
46
  */
47
47
  export declare function useIkonDebug(app: UseIkonAppResult): UseIkonDebugResult;
48
+ //# sourceMappingURL=use-ikon-debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ikon-debug.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/app/use-ikon-debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAoBvD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,EAAE,gBAAgB,CAAC;IACtB,gDAAgD;IAChD,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,6FAA6F;IAC7F,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kGAAkG;IAClG,cAAc,EAAE,OAAO,CAAC;IACxB,6FAA6F;IAC7F,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oEAAoE;IACpE,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,kBAAkB,CA2GtE"}
@@ -8,7 +8,7 @@ export interface AuthProviderProps {
8
8
  * Authentication provider that manages auth state and provides auth methods.
9
9
  * This is a headless provider - it manages state only, no UI rendering.
10
10
  */
11
- export declare function AuthProvider({ children, config }: AuthProviderProps): import("react").JSX.Element;
11
+ export declare function AuthProvider({ children, config }: AuthProviderProps): import('react').JSX.Element;
12
12
  /**
13
13
  * Hook to access the auth context.
14
14
  * Throws if used outside of AuthProvider.
@@ -19,3 +19,4 @@ export declare function useAuth(): AuthContextValue;
19
19
  * Returns null if used outside of AuthProvider (doesn't throw).
20
20
  */
21
21
  export declare function useAuthOptional(): AuthContextValue | null;
22
+ //# sourceMappingURL=auth-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-context.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/auth-context.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,SAAS,EAA0D,MAAM,OAAO,CAAC;AAoC9G,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAuE,MAAM,SAAS,CAAC;AA2DjI,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,iBAAiB,+BA+nBnE;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,gBAAgB,CAM1C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,GAAG,IAAI,CAEzD"}
@@ -1,11 +1,11 @@
1
1
  import { AuthenticationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON, RegistrationResponseJSON } from '@simplewebauthn/browser';
2
- import { AuthSession, LoginMethod, RefreshableSession } from './types';
2
+ import { AuthMethod, AuthSession, LoginMethod, RefreshableSession } from './types';
3
3
  /**
4
4
  * Result of parsing an OAuth callback from the URL.
5
5
  */
6
6
  export interface OAuthCallbackResult {
7
7
  token: string;
8
- provider: LoginMethod;
8
+ provider: AuthMethod;
9
9
  }
10
10
  /**
11
11
  * Whether a same-origin auth response came from an LB with no `/ikon/auth` route — the app
@@ -66,7 +66,7 @@ export declare function parseOAuthCallback(): OAuthCallbackResult | null;
66
66
  /** The single-use code an opted-in callback carries, waiting to be exchanged for a session. */
67
67
  export declare function parseOAuthCodeCallback(): {
68
68
  code: string;
69
- provider: LoginMethod;
69
+ provider: AuthMethod;
70
70
  } | null;
71
71
  /**
72
72
  * Trades the callback's code for the session it stands for, using the verifier this browser kept.
@@ -76,7 +76,7 @@ export declare function parseOAuthCodeCallback(): {
76
76
  * refuse — so the caller reports a failed sign-in instead of silently leaving the visitor
77
77
  * anonymous with a code still in the address bar.
78
78
  */
79
- export declare function exchangeOAuthCode(code: string, provider: LoginMethod, authUrlOverride?: string): Promise<AuthSession>;
79
+ export declare function exchangeOAuthCode(code: string, provider: AuthMethod, authUrlOverride?: string): Promise<AuthSession>;
80
80
  /**
81
81
  * Renews the access token from the refresh cookie. Returns null when the session is definitively
82
82
  * over — the chain was spent, revoked, or never existed — and throws when the answer is simply
@@ -94,7 +94,7 @@ export declare function refreshBrowserSession(marker: RefreshableSession): Promi
94
94
  */
95
95
  export interface OAuthErrorResult {
96
96
  code: string;
97
- provider: LoginMethod | null;
97
+ provider: AuthMethod | null;
98
98
  }
99
99
  /**
100
100
  * Get the error from an OAuth callback if present.
@@ -133,6 +133,38 @@ export declare function clearOAuthParams(): void;
133
133
  * Build an OAuth redirect URL for the given provider.
134
134
  */
135
135
  export declare function buildOAuthRedirectUrl(provider: LoginMethod, spaceId: string, authUrl: string, returnUrl?: string): Promise<string>;
136
+ /**
137
+ * Where a sign-in through one of the space's SSO connections starts. `linkSessionToken` — the
138
+ * session this browser already holds — asks for the sign-in to join that account rather than make a
139
+ * new one (see {@link requestSsoLinkTicket}). Null when the browser cannot do PKCE: SSO takes only
140
+ * the code flow.
141
+ */
142
+ export declare function buildSsoRedirectUrl(connectionId: string, spaceId: string, authUrl: string, options?: {
143
+ returnUrl?: string;
144
+ linkSessionToken?: string;
145
+ }): Promise<string | null>;
146
+ /** One of the space's SSO connections, as much as a sign-in screen needs to offer it. */
147
+ export interface SsoConnectionHint {
148
+ connectionId: string;
149
+ name: string;
150
+ }
151
+ /**
152
+ * The connections this host offers before anyone types anything — those its space bound to it. Empty
153
+ * on a generic host, and on any failure: the email field still works, so a lookup that did not
154
+ * happen must not stop the screen from rendering.
155
+ */
156
+ export declare function findSsoConnectionsForHost(authUrl: string, host: string): Promise<SsoConnectionHint[]>;
157
+ /** The connection an address signs in through in this space, when its domain is proven to belong to one. */
158
+ export declare function discoverSsoConnection(authUrl: string, spaceId: string, email: string): Promise<SsoConnectionHint | null>;
159
+ /**
160
+ * A single-use ticket that lets the SSO sign-in about to start join the account this browser is
161
+ * signed in to, rather than making a new one. What a space that requires SSO sends someone through
162
+ * when they arrive signed in some other way; undefined when the account cannot be linked.
163
+ *
164
+ * Bound to `codeChallenge`: the sign-in must start with it, and the join is made only when this
165
+ * browser redeems the code with its verifier.
166
+ */
167
+ export declare function requestSsoLinkTicket(authUrl: string, token: string, connectionId: string, codeChallenge: string): Promise<string | undefined>;
136
168
  /**
137
169
  * Check if passkey/WebAuthn is supported in the current browser.
138
170
  */
@@ -163,3 +195,4 @@ export declare function verifyPasskeyAuthentication(authUrl: string, response: A
163
195
  * existed, which is also where app bundles shipping an older SDK copy stay.
164
196
  */
165
197
  export declare function revokeSessionOnServer(token: string, authUrlOverride?: string): Promise<void>;
198
+ //# sourceMappingURL=auth-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/auth-service.ts"],"names":[],"mappings":"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"}
package/auth/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export type { AuthConfig, AuthContextValue, AuthSession, AuthState, AuthUser, LoginMethod } from './types';
1
+ export type { AuthConfig, AuthContextValue, AuthMethod, AuthSession, AuthState, AuthUser, LoginMethod } from './types';
2
2
  export { clearAuthSession, isSignedInBootLikely, loadAuthSession, saveAuthSession, sessionToUser } from './storage';
3
- export { authenticateAnonymous, buildOAuthRedirectUrl, clearOAuthParams, describeAuthError, exchangeOAuthCode, getPasskeyAuthenticationOptions, getPasskeyRegistrationOptions, isPasskeySupported, parseOAuthCallback, parseOAuthCodeCallback, parseOAuthError, revokeSessionOnServer, sendLoginCode, verifyLoginCode, verifyPasskeyAuthentication, verifyPasskeyRegistration, type OAuthCallbackResult, type OAuthErrorResult, type SendLoginCodeOptions, type VerifyLoginCodeOptions, } from './auth-service';
3
+ export { authenticateAnonymous, buildOAuthRedirectUrl, buildSsoRedirectUrl, clearOAuthParams, describeAuthError, discoverSsoConnection, findSsoConnectionsForHost, requestSsoLinkTicket, type SsoConnectionHint, exchangeOAuthCode, getPasskeyAuthenticationOptions, getPasskeyRegistrationOptions, isPasskeySupported, parseOAuthCallback, parseOAuthCodeCallback, parseOAuthError, revokeSessionOnServer, sendLoginCode, verifyLoginCode, verifyPasskeyAuthentication, verifyPasskeyRegistration, type OAuthCallbackResult, type OAuthErrorResult, type SendLoginCodeOptions, type VerifyLoginCodeOptions, } from './auth-service';
4
4
  export { AuthProvider, useAuth, useAuthOptional, type AuthProviderProps } from './auth-context';
5
5
  export { useAuthGuard, type UseAuthGuardOptions, type UseAuthGuardResult } from './use-auth-guard';
6
- export { OAUTH_CONTINUE_PARAM, captureOAuthContinuation, completeOAuthContinuation, hasPendingOAuthContinuation } from './oauth-continuation';
6
+ export { useSsoSignIn, type UseSsoSignInResult } from './use-sso-sign-in';
7
+ export { OAUTH_CONTINUE_PARAM, captureOAuthContinuation, completeOAuthContinuation, hasPendingOAuthContinuation, type OAuthContinuationOutcome } from './oauth-continuation';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGvH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGpH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,+BAA+B,EAC/B,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -23,6 +23,20 @@ export declare const OAUTH_CONTINUE_PARAM = "ikon-oauth";
23
23
  */
24
24
  export declare function captureOAuthContinuation(): boolean;
25
25
  export declare function hasPendingOAuthContinuation(): boolean;
26
+ export type OAuthContinuationOutcome =
27
+ /** The browser is on its way to the consent screen. */
28
+ {
29
+ status: 'handed-off';
30
+ }
31
+ /** The server said this person may not authorize here, and said why. Show it. */
32
+ | {
33
+ status: 'refused';
34
+ message: string;
35
+ }
36
+ /** Kept for a retry, or given up on — the pointer's own state says which. */
37
+ | {
38
+ status: 'pending';
39
+ };
26
40
  /**
27
41
  * Report the completed sign-in and hand the browser to the consent screen.
28
42
  *
@@ -41,4 +55,5 @@ export declare function hasPendingOAuthContinuation(): boolean;
41
55
  * keeps the pointer so a later attempt can succeed, while a refusal from the server clears it, because
42
56
  * retrying a spent or expired authorization only traps the user in a flow that cannot finish.
43
57
  */
44
- export declare function completeOAuthContinuation(token: string | null): Promise<boolean>;
58
+ export declare function completeOAuthContinuation(token: string | null): Promise<OAuthContinuationOutcome>;
59
+ //# sourceMappingURL=oauth-continuation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-continuation.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/oauth-continuation.ts"],"names":[],"mappings":"AACA,wGAAwG;AACxG,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAmBjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAelD;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAWD,MAAM,MAAM,wBAAwB;AAClC,uDAAuD;AACrD;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE;AAC1B,iFAAiF;GAC/E;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACxC,6EAA6E;GAC3E;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAK1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAuEvG"}
package/auth/storage.d.ts CHANGED
@@ -78,3 +78,4 @@ export declare function getAutoLoginAttemptedRunId(): string | null;
78
78
  * Convert AuthSession to AuthUser.
79
79
  */
80
80
  export declare function sessionToUser(session: AuthSession): AuthUser;
81
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAoDzE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUrD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAM1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAyBpD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAW9C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAOxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,IAAI,CAiBlE;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAM9C;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAe9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQtE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAM1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAQ5D"}