@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.
- package/account/use-account-removal.d.ts +37 -0
- package/account/use-account-removal.d.ts.map +1 -0
- package/app/boot-snapshot-variant.d.ts +2 -1
- package/app/boot-snapshot-variant.d.ts.map +1 -0
- package/app/connection-recovery.d.ts +1 -0
- package/app/connection-recovery.d.ts.map +1 -0
- package/app/connection-state-renderer.d.ts +2 -1
- package/app/connection-state-renderer.d.ts.map +1 -0
- package/app/feedback/feedback-controls.d.ts +24 -0
- package/app/feedback/feedback-controls.d.ts.map +1 -0
- package/app/feedback/feedback-form.d.ts +26 -0
- package/app/feedback/feedback-form.d.ts.map +1 -0
- package/app/feedback/platform-layer.d.ts +32 -0
- package/app/feedback/platform-layer.d.ts.map +1 -0
- package/app/feedback/use-ikon-feedback.d.ts +13 -0
- package/app/feedback/use-ikon-feedback.d.ts.map +1 -0
- package/app/ikon-app.d.ts +1 -0
- package/app/ikon-app.d.ts.map +1 -0
- package/app/index.d.ts +2 -0
- package/app/index.d.ts.map +1 -0
- package/app/use-ikon-app.d.ts +29 -1
- package/app/use-ikon-app.d.ts.map +1 -0
- package/app/use-ikon-debug.d.ts +2 -1
- package/app/use-ikon-debug.d.ts.map +1 -0
- package/auth/auth-context.d.ts +2 -1
- package/auth/auth-context.d.ts.map +1 -0
- package/auth/auth-service.d.ts +38 -5
- package/auth/auth-service.d.ts.map +1 -0
- package/auth/index.d.ts +4 -2
- package/auth/index.d.ts.map +1 -0
- package/auth/oauth-continuation.d.ts +1 -0
- package/auth/oauth-continuation.d.ts.map +1 -0
- package/auth/storage.d.ts +1 -0
- package/auth/storage.d.ts.map +1 -0
- package/auth/types.d.ts +19 -4
- package/auth/types.d.ts.map +1 -0
- package/auth/use-auth-guard.d.ts +1 -0
- package/auth/use-auth-guard.d.ts.map +1 -0
- package/auth/use-sso-sign-in.d.ts +18 -0
- package/auth/use-sso-sign-in.d.ts.map +1 -0
- package/base/base-div.d.ts +1 -0
- package/base/base-div.d.ts.map +1 -0
- package/base/base-module.d.ts +1 -0
- package/base/base-module.d.ts.map +1 -0
- package/consent/use-consent.d.ts +35 -0
- package/consent/use-consent.d.ts.map +1 -0
- package/debug/debug-overlay.d.ts +2 -1
- package/debug/debug-overlay.d.ts.map +1 -0
- package/feedback-form-BSy2olwD.js +511 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/index.d.ts.map +1 -0
- package/hooks/use-ikon-reactive.d.ts +2 -1
- package/hooks/use-ikon-reactive.d.ts.map +1 -0
- package/hooks/use-reactive.d.ts +2 -1
- package/hooks/use-reactive.d.ts.map +1 -0
- package/hooks/use-toasts.d.ts +1 -0
- package/hooks/use-toasts.d.ts.map +1 -0
- package/i18n/i18n.d.ts +2 -1
- package/i18n/i18n.d.ts.map +1 -0
- package/i18n/index.d.ts +1 -0
- package/i18n/index.d.ts.map +1 -0
- package/ikon-ui-registry.d.ts +1 -0
- package/ikon-ui-registry.d.ts.map +1 -0
- package/ikon-ui.d.ts +3 -2
- package/ikon-ui.d.ts.map +1 -0
- package/index.d.ts +9 -6
- package/index.d.ts.map +1 -0
- package/index.js +2060 -1914
- package/inspect/inspect-overlay.d.ts +1 -0
- package/inspect/inspect-overlay.d.ts.map +1 -0
- package/media/audio-player.d.ts +1 -0
- package/media/audio-player.d.ts.map +1 -0
- package/media/media-module.d.ts +1 -0
- package/media/media-module.d.ts.map +1 -0
- package/media/use-media-capture.d.ts +2 -1
- package/media/use-media-capture.d.ts.map +1 -0
- package/media/use-sibling-client.d.ts +2 -1
- package/media/use-sibling-client.d.ts.map +1 -0
- package/media/video-canvas.d.ts +1 -0
- package/media/video-canvas.d.ts.map +1 -0
- package/media/video-stream-view.d.ts +3 -2
- package/media/video-stream-view.d.ts.map +1 -0
- package/motion/motion-controller.d.ts +2 -1
- package/motion/motion-controller.d.ts.map +1 -0
- package/package.json +1 -1
- package/parallax-view.d.ts +3 -2
- package/parallax-view.d.ts.map +1 -0
- package/renderer/component-library.d.ts +1 -0
- package/renderer/component-library.d.ts.map +1 -0
- package/renderer/index.d.ts +2 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/lazy-resolver.d.ts +10 -0
- package/renderer/lazy-resolver.d.ts.map +1 -0
- package/renderer/types.d.ts +5 -4
- package/renderer/types.d.ts.map +1 -0
- package/renderer/ui-renderer.d.ts +4 -3
- package/renderer/ui-renderer.d.ts.map +1 -0
- package/renderer/use-root-view.d.ts +2 -1
- package/renderer/use-root-view.d.ts.map +1 -0
- package/renderer/use-ui-node.d.ts +2 -1
- package/renderer/use-ui-node.d.ts.map +1 -0
- package/renderer/use-ui-store.d.ts +2 -1
- package/renderer/use-ui-store.d.ts.map +1 -0
- package/shadertoy/shadertoy-gl.d.ts +1 -0
- package/shadertoy/shadertoy-gl.d.ts.map +1 -0
- package/shadertoy/shadertoy-module.d.ts +4 -3
- package/shadertoy/shadertoy-module.d.ts.map +1 -0
- package/shadertoy/shadertoy-renderer.d.ts +1 -1
- package/shadertoy/shadertoy-renderer.d.ts.map +1 -0
- package/shadertoy/shadertoy-type.d.ts +2 -0
- package/shadertoy/shadertoy-type.d.ts.map +1 -0
- package/shadertoy-renderer-Cq1lOXBs.js +428 -0
- package/shadertoy-type-Cs2WeCWV.js +15 -0
- package/shared/render-motion-letters.d.ts +1 -0
- package/shared/render-motion-letters.d.ts.map +1 -0
- package/surface.d.ts +8 -5
- package/surface.d.ts.map +1 -0
- package/theme/ikon-auth.css +7 -5
- package/use-ikon-styles.d.ts +2 -1
- package/use-ikon-styles.d.ts.map +1 -0
- package/use-ikon-ui-stores.d.ts +2 -0
- package/use-ikon-ui-stores.d.ts.map +1 -0
- package/app/connection-state-renderer.spec.d.ts +0 -1
- package/app/ikon-app.spec.d.ts +0 -1
- package/auth/auth-context.spec.d.ts +0 -1
- package/base/focus-hint-scroll.spec.d.ts +0 -1
- package/media/use-media-capture.spec.d.ts +0 -1
- package/media/use-sibling-client.spec.d.ts +0 -1
- package/media/video-stream-view.spec.d.ts +0 -1
- package/renderer/unresolved-node.spec.d.ts +0 -1
- 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 '
|
|
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 '
|
|
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
|
@@ -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"}
|
package/app/use-ikon-app.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConnectionState, IkonClient, TimeoutConfig, WebRTCTrackMapInfo } from '
|
|
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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"}
|
package/app/use-ikon-debug.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConnectionState } from '
|
|
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"}
|
package/auth/auth-context.d.ts
CHANGED
|
@@ -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(
|
|
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"}
|
package/auth/auth-service.d.ts
CHANGED
|
@@ -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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
@@ -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:
|
|
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:
|
|
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:
|
|
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:
|
|
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"}
|
package/auth/use-auth-guard.d.ts
CHANGED
|
@@ -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"}
|
package/base/base-div.d.ts
CHANGED
|
@@ -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"}
|
package/base/base-module.d.ts
CHANGED
|
@@ -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"}
|