@ikonai/sdk-react-ui 1.10.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 (131) 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 +2 -1
  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 +1 -0
  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 +29 -1
  22. package/app/use-ikon-app.d.ts.map +1 -0
  23. package/app/use-ikon-debug.d.ts +2 -1
  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 +4 -2
  30. package/auth/index.d.ts.map +1 -0
  31. package/auth/oauth-continuation.d.ts +1 -0
  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 +9 -6
  67. package/index.d.ts.map +1 -0
  68. package/index.js +2060 -1914
  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 +3 -2
  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 +2 -0
  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 +5 -4
  95. package/renderer/types.d.ts.map +1 -0
  96. package/renderer/ui-renderer.d.ts +4 -3
  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 +8 -5
  117. package/surface.d.ts.map +1 -0
  118. package/theme/ikon-auth.css +7 -5
  119. package/use-ikon-styles.d.ts +2 -1
  120. package/use-ikon-styles.d.ts.map +1 -0
  121. package/use-ikon-ui-stores.d.ts +2 -0
  122. package/use-ikon-ui-stores.d.ts.map +1 -0
  123. package/app/connection-state-renderer.spec.d.ts +0 -1
  124. package/app/ikon-app.spec.d.ts +0 -1
  125. package/auth/auth-context.spec.d.ts +0 -1
  126. package/base/focus-hint-scroll.spec.d.ts +0 -1
  127. package/media/use-media-capture.spec.d.ts +0 -1
  128. package/media/use-sibling-client.spec.d.ts +0 -1
  129. package/media/video-stream-view.spec.d.ts +0 -1
  130. package/renderer/unresolved-node.spec.d.ts +0 -1
  131. 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,4 +1,4 @@
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';
@@ -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
@@ -53,3 +53,4 @@ export interface IkonAppProps extends UseIkonAppResult {
53
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,4 +1,4 @@
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
4
  import { DispatchActionOptions } from '../renderer';
@@ -37,6 +37,18 @@ export type IkonUiModuleRegistration = (registry: IkonUiRegistry) => void;
37
37
  * SessionIdentity the connect resolves to, so a hand-typed query parameter must not displace one.
38
38
  */
39
39
  export declare function mergeConnectParameters(urlParameters: Record<string, string>, appParameters?: Record<string, string>): Record<string, string>;
40
+ /**
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;
40
52
  /**
41
53
  * Who a session is for, as opposed to what it presents to prove it. A browser access token is
42
54
  * renewed every few minutes, and a renewal is the same person holding a fresher credential, so the
@@ -86,6 +98,16 @@ export interface UseIkonAppOptions {
86
98
  * Enable background audio playback on both desktop and mobile. Default: false
87
99
  */
88
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;
89
111
  /**
90
112
  * Enable WebRTC for audio and video transport. Default: true
91
113
  */
@@ -214,6 +236,11 @@ export interface UseIkonAppResult {
214
236
  * low-tier app creators by the connect handshake). Defaults to false until connected.
215
237
  */
216
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;
217
244
  /**
218
245
  * True after `connectionState === 'connecting'` has lasted longer than the slow-connection
219
246
  * threshold (default 5s, configurable via `timeouts.slowConnectionThresholdMs`). The connecting
@@ -234,3 +261,4 @@ export interface UseIkonAppResult {
234
261
  * Encapsulates client creation, auth scenarios, UI registry setup, and state management.
235
262
  */
236
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
@@ -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 { useSsoSignIn, type UseSsoSignInResult } from './use-sso-sign-in';
6
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"}
@@ -56,3 +56,4 @@ export type OAuthContinuationOutcome =
56
56
  * retrying a spent or expired authorization only traps the user in a flow that cannot finish.
57
57
  */
58
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"}
package/auth/types.d.ts CHANGED
@@ -4,6 +4,13 @@
4
4
  * anonymous identity (all visitors collapse onto a shared app instance).
5
5
  */
6
6
  export type LoginMethod = 'google' | 'facebook' | 'apple' | 'microsoft' | 'signicat' | 'email' | 'passkey' | 'guest' | 'global';
7
+ /**
8
+ * A method a space can offer: every {@link LoginMethod} plus 'sso', the space's own identity
9
+ * providers. 'sso' has no single button — which connection a person signs in through is found at
10
+ * runtime (`findSsoConnectionsForHost`, `discoverSsoConnection`) and started with `loginWithSso` —
11
+ * so it is kept out of `LoginMethod`, which apps key their per-provider button maps on.
12
+ */
13
+ export type AuthMethod = LoginMethod | 'sso';
7
14
  /**
8
15
  * Authenticated user information.
9
16
  *
@@ -12,7 +19,7 @@ export type LoginMethod = 'google' | 'facebook' | 'apple' | 'microsoft' | 'signi
12
19
  */
13
20
  export interface AuthUser {
14
21
  id: string;
15
- provider: LoginMethod | 'anonymous' | 'dev';
22
+ provider: AuthMethod | 'anonymous' | 'dev';
16
23
  token: string;
17
24
  authenticatedAt: number;
18
25
  /**
@@ -35,7 +42,7 @@ export interface AuthState {
35
42
  * Authentication configuration.
36
43
  */
37
44
  export interface AuthConfig {
38
- methods: LoginMethod[];
45
+ methods: AuthMethod[];
39
46
  spaceId: string;
40
47
  /**
41
48
  * When true, the frontend shows a mandatory sign-in wall before the app loads; listing 'guest' in
@@ -68,7 +75,7 @@ export interface AuthConfig {
68
75
  */
69
76
  export interface AuthSession {
70
77
  token: string;
71
- provider: LoginMethod | 'anonymous' | 'dev';
78
+ provider: AuthMethod | 'anonymous' | 'dev';
72
79
  authenticatedAt: number;
73
80
  /** Set when the token is short-lived and a refresh cookie stands behind it. */
74
81
  expiresAt?: string;
@@ -78,7 +85,7 @@ export interface AuthSession {
78
85
  * load that a session exists and whose it is, and nothing that can be used as a credential.
79
86
  */
80
87
  export interface RefreshableSession {
81
- provider: LoginMethod | 'anonymous' | 'dev';
88
+ provider: AuthMethod | 'anonymous' | 'dev';
82
89
  /** When the person actually signed in. Unchanged by renewals — those renew a token, not a login. */
83
90
  authenticatedAt: number;
84
91
  /** Last successful renewal, which is what the cookie's own lifetime runs from. */
@@ -90,9 +97,17 @@ export interface RefreshableSession {
90
97
  export interface AuthContextValue {
91
98
  state: AuthState;
92
99
  login: (method: LoginMethod) => Promise<void>;
100
+ /**
101
+ * Signs in through one of the space's SSO connections. `linkSessionToken`, the session this
102
+ * browser already holds, joins that account instead of making a new one.
103
+ */
104
+ loginWithSso: (connectionId: string, options?: {
105
+ linkSessionToken?: string;
106
+ }) => Promise<void>;
93
107
  logout: () => void;
94
108
  getToken: () => string | null;
95
109
  registerPasskey: (name?: string) => Promise<void>;
96
110
  requestEmailCode: (email: string) => Promise<void>;
97
111
  submitEmailCode: (email: string, code: string) => Promise<void>;
98
112
  }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhI;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kIAAkI;IAClI,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAC3C,oGAAoG;IACpG,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;OAGG;IACH,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE"}
@@ -50,3 +50,4 @@ export interface UseAuthGuardResult {
50
50
  * Returns state that can be used to conditionally render auth UI or protected content.
51
51
  */
52
52
  export declare function useAuthGuard(options: UseAuthGuardOptions): UseAuthGuardResult;
53
+ //# sourceMappingURL=use-auth-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-auth-guard.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/use-auth-guard.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAE/B;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAiI7E"}
@@ -0,0 +1,18 @@
1
+ import { SsoConnectionHint } from './auth-service';
2
+ import { AuthConfig } from './types';
3
+ export interface UseSsoSignInResult {
4
+ /** The connections this host offers up front — the tenant's own IdP on the tenant's own host. */
5
+ hostConnections: SsoConnectionHint[];
6
+ isDiscovering: boolean;
7
+ /** Set when an address matched no connection, or the lookup failed. */
8
+ discoverError: string | null;
9
+ /** Finds the connection an address belongs to and starts signing in through it. */
10
+ discover: (email: string) => Promise<void>;
11
+ signIn: (connectionId: string) => Promise<void>;
12
+ }
13
+ /**
14
+ * What a sign-in screen needs to offer a space's own identity providers. Enabled when the app lists
15
+ * `sso` among its methods; which connection a person gets is found at runtime, never configured.
16
+ */
17
+ export declare function useSsoSignIn(config: AuthConfig): UseSsoSignInResult;
18
+ //# sourceMappingURL=use-sso-sign-in.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-sso-sign-in.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/auth/use-sso-sign-in.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoD,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mFAAmF;IACnF,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,kBAAkB,CAwDnE"}
@@ -1,3 +1,4 @@
1
1
  import { IkonUiComponentResolver } from '../ikon-ui-registry';
2
2
  export declare function createBaseDivResolver(): IkonUiComponentResolver;
3
3
  export declare function createBaseResolvers(): IkonUiComponentResolver[];
4
+ //# sourceMappingURL=base-div.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-div.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/base/base-div.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAmbnE,wBAAgB,qBAAqB,IAAI,uBAAuB,CAmD/D;AAsDD,wBAAgB,mBAAmB,IAAI,uBAAuB,EAAE,CAO/D"}
@@ -4,3 +4,4 @@ export declare const IKON_UI_BASE_MODULE = "base";
4
4
  export declare const loadBaseModule: IkonUiModuleLoader;
5
5
  export declare function registerBaseModule(registry: IkonUiRegistry): void;
6
6
  export { createBaseResolvers };
7
+ //# sourceMappingURL=base-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-module.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk-react-ui/src/base/base-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C,eAAO,MAAM,cAAc,EAAE,kBAAsD,CAAC;AAEpF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEjE;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}