@oxyhq/services 22.13.0 → 22.13.1

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 (78) hide show
  1. package/lib/commonjs/index.js +74 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/notifications/deviceNotifications.js +424 -0
  4. package/lib/commonjs/notifications/deviceNotifications.js.map +1 -0
  5. package/lib/commonjs/ui/components/OxyAuthChooser.js +5 -4
  6. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  7. package/lib/commonjs/ui/components/OxySignInRequestSurface.js +147 -0
  8. package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -0
  9. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
  10. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js +65 -103
  11. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js.map +1 -1
  12. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js +0 -2
  13. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js.map +1 -1
  14. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js +12 -8
  15. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  16. package/lib/commonjs/ui/components/authChooser/types.js +11 -0
  17. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  18. package/lib/module/index.js +18 -0
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/notifications/deviceNotifications.js +414 -0
  21. package/lib/module/notifications/deviceNotifications.js.map +1 -0
  22. package/lib/module/ui/components/OxyAuthChooser.js +5 -4
  23. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  24. package/lib/module/ui/components/OxySignInRequestSurface.js +141 -0
  25. package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -0
  26. package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
  27. package/lib/module/ui/components/authChooser/SignInRequestView.js +66 -104
  28. package/lib/module/ui/components/authChooser/SignInRequestView.js.map +1 -1
  29. package/lib/module/ui/components/authChooser/TroubleDisclosure.js +0 -2
  30. package/lib/module/ui/components/authChooser/TroubleDisclosure.js.map +1 -1
  31. package/lib/module/ui/components/authChooser/requestSurfaces.js +12 -8
  32. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  33. package/lib/module/ui/components/authChooser/types.js +11 -0
  34. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  35. package/lib/typescript/commonjs/index.d.ts +5 -0
  36. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts +173 -0
  38. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +5 -3
  40. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts +108 -0
  42. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts.map +1 -0
  43. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts +18 -18
  45. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts +3 -10
  47. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts.map +1 -1
  48. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts +7 -3
  49. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +18 -0
  51. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  52. package/lib/typescript/module/index.d.ts +5 -0
  53. package/lib/typescript/module/index.d.ts.map +1 -1
  54. package/lib/typescript/module/notifications/deviceNotifications.d.ts +173 -0
  55. package/lib/typescript/module/notifications/deviceNotifications.d.ts.map +1 -0
  56. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +5 -3
  57. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  58. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts +108 -0
  59. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts.map +1 -0
  60. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts.map +1 -1
  61. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts +18 -18
  62. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  63. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts +3 -10
  64. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts.map +1 -1
  65. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts +7 -3
  66. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  67. package/lib/typescript/module/ui/components/authChooser/types.d.ts +18 -0
  68. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  69. package/package.json +15 -5
  70. package/src/index.ts +32 -0
  71. package/src/notifications/deviceNotifications.ts +458 -0
  72. package/src/ui/components/OxyAuthChooser.tsx +5 -4
  73. package/src/ui/components/OxySignInRequestSurface.tsx +202 -0
  74. package/src/ui/components/authChooser/SignInEntryView.tsx +9 -3
  75. package/src/ui/components/authChooser/SignInRequestView.tsx +78 -111
  76. package/src/ui/components/authChooser/TroubleDisclosure.tsx +3 -11
  77. package/src/ui/components/authChooser/requestSurfaces.tsx +14 -10
  78. package/src/ui/components/authChooser/types.ts +19 -0
@@ -0,0 +1,173 @@
1
+ /**
2
+ * The ONE place `@oxyhq/services` touches `expo-notifications`.
3
+ *
4
+ * Every Oxy app that receives push needs the identical adapter — native-only,
5
+ * dynamically imported, reading the OS permission and minting an EXPO push
6
+ * token — so it lives here instead of being copied into each app. The
7
+ * bearer-authenticated transport (`registerPushToken` / `unregisterPushToken`)
8
+ * already lives in `@oxyhq/core`; core may never import an `expo-*` module, and
9
+ * this adapter is the Expo-side half that closes that gap.
10
+ *
11
+ * ## Native-only by construction
12
+ *
13
+ * Every entry point resolves its null/no-op result from `Platform.OS` BEFORE the
14
+ * dynamic `import()`, so a web bundle never requests `expo-notifications` at all.
15
+ * `expo-notifications` and `expo-constants` are OPTIONAL peer dependencies: an
16
+ * app that does not use push never installs them, and a build without them
17
+ * degrades to "notifications unavailable" rather than throwing at
18
+ * module-evaluation time.
19
+ *
20
+ * ## The token is an EXPO push token — never a raw device token
21
+ *
22
+ * {@link getExpoPushToken} calls `getExpoPushTokenAsync()`, which returns the
23
+ * `ExponentPushToken[…]` handle Expo's push service delivers through — the only
24
+ * form it accepts. `getDevicePushTokenAsync()` — the raw APNs/FCM token — is
25
+ * deliberately NOT used anywhere: registering one of those looks entirely
26
+ * successful (the row is stored, the endpoint returns 200) and then every push
27
+ * silently fails at delivery time. `@oxyhq/core`'s `registerPushToken` rejects a
28
+ * raw device token before sending, and this module is the reason it never has to.
29
+ *
30
+ * ## The payload is untrusted
31
+ *
32
+ * Nothing here surfaces a notification's `title` / `body` / `subtitle`. The only
33
+ * payload that leaves this module is the raw `content.data` — the routing keys —
34
+ * typed `unknown`, so a caller has to validate it before acting on it and there
35
+ * is no exported shape that invites rendering push-delivered text. The
36
+ * foreground handler likewise answers with a visibility verdict and nothing else.
37
+ */
38
+ import type { PushTokenPlatform } from '@oxyhq/core';
39
+ /**
40
+ * The platform tag the push-token registry stores this installation under, or
41
+ * `null` on a platform Oxy does not deliver push to.
42
+ *
43
+ * Synchronous and import-free — the answer is a property of the bundle, not of
44
+ * any native module.
45
+ *
46
+ * Web is `null` on purpose: the registry accepts a `web` platform, but browser
47
+ * push needs a VAPID key + service-worker subscription no Oxy app has wired, so
48
+ * there is no token to register and claiming otherwise would store a row nothing
49
+ * can ever deliver to.
50
+ */
51
+ export declare function pushTokenPlatform(): PushTokenPlatform | null;
52
+ /**
53
+ * Whether the OS notification permission is ALREADY granted.
54
+ *
55
+ * Never prompts, so an app can re-check on every cold boot without ever asking
56
+ * the user twice. Use {@link requestNotificationPermission} for the one place
57
+ * that is allowed to show the system dialog.
58
+ */
59
+ export declare function hasNotificationPermission(): Promise<boolean>;
60
+ /**
61
+ * Ensure the OS notification permission, prompting at most once.
62
+ *
63
+ * An installation that already answered the system dialog is never asked again:
64
+ * an already-granted permission resolves `true` without a second dialog, and a
65
+ * denial with `canAskAgain: false` resolves `false` without issuing a request
66
+ * the OS would silently ignore.
67
+ *
68
+ * @returns Whether notifications are granted once this call is done.
69
+ */
70
+ export declare function requestNotificationPermission(): Promise<boolean>;
71
+ /**
72
+ * This installation's Expo push token (`ExponentPushToken[…]`), or `null` when
73
+ * one cannot be minted.
74
+ *
75
+ * Deliberately `getExpoPushTokenAsync` — see the module header for why the raw
76
+ * device-token variant is never used.
77
+ *
78
+ * Every `null` is logged with the reason it happened. A missing EAS project id
79
+ * in particular is a BUILD MISCONFIGURATION, not a user state: no token can ever
80
+ * be minted, so push is off for every install of that build until the config is
81
+ * fixed. It is reported as such rather than blending into the
82
+ * indistinguishable "permission denied / offline" bucket.
83
+ */
84
+ export declare function getExpoPushToken(): Promise<string | null>;
85
+ /**
86
+ * Take the payload of the notification that COLD-LAUNCHED the app, if any.
87
+ *
88
+ * "Take" is literal: the response is cleared from `expo-notifications` once
89
+ * read, so a listener attached later in the same launch is not handed the same
90
+ * tap again. Clearing is best-effort across OS/module versions, so a caller that
91
+ * must not act twice still needs its own idempotency ledger.
92
+ *
93
+ * @returns The raw, untrusted `content.data` of the launching notification, or
94
+ * `null`. Parsing/validation is the caller's job.
95
+ */
96
+ export declare function takeLaunchNotificationData(): Promise<unknown>;
97
+ /**
98
+ * What the OS should do with a notification that arrives while the app is
99
+ * FOREGROUNDED.
100
+ *
101
+ * `'suppress'` is `expo-notifications`' own default for a foregrounded app, so a
102
+ * decision function that only ever returns `'show'` for the payloads it
103
+ * recognises leaves every other notification exactly as it behaves today.
104
+ */
105
+ export type ForegroundPresentation = 'show' | 'suppress';
106
+ /** How prominently Android surfaces a channel's notifications. */
107
+ export type NotificationChannelImportance = 'default' | 'high';
108
+ /** An Android notification channel this app delivers on. */
109
+ export interface NotificationChannelSpec {
110
+ /**
111
+ * The channel id. It MUST match the id the sender attaches: Android 8+ drops
112
+ * a notification whose channel the app has not created, silently and with no
113
+ * error on either side, which is the hardest push symptom there is to
114
+ * diagnose. Ids that cross the wire belong in `@oxyhq/contracts`, not in a
115
+ * string typed on both sides.
116
+ */
117
+ id: string;
118
+ /** User-visible channel name — app copy, so the caller localizes it. */
119
+ name: string;
120
+ /** User-visible description shown in Android's notification settings. */
121
+ description?: string;
122
+ importance?: NotificationChannelImportance;
123
+ }
124
+ /**
125
+ * Create (or update) an Android notification channel.
126
+ *
127
+ * A no-op everywhere but Android: iOS has no channels, and web never loads the
128
+ * native module. Call it BEFORE registering a push token, so the very first
129
+ * notification the server sends already has a channel to land on.
130
+ *
131
+ * Failure is non-fatal and logged: a missing channel costs visibility, and
132
+ * refusing to register a token over it would cost the feature entirely.
133
+ *
134
+ * @returns Whether the channel was actually created (`false` off Android, or
135
+ * when the native module is unavailable, or when creation failed).
136
+ */
137
+ export declare function ensureNotificationChannel(spec: NotificationChannelSpec): Promise<boolean>;
138
+ /**
139
+ * Install the ONE process-wide handler that decides whether an incoming
140
+ * notification is shown while the app is in the FOREGROUND.
141
+ *
142
+ * Without a handler, `expo-notifications` shows nothing at all while the app is
143
+ * open — which is exactly when a time-critical notification (a "Sign in with
144
+ * Oxy" approval request, say) matters most, because the user is already holding
145
+ * the phone.
146
+ *
147
+ * The handler ONLY decides visibility. It never navigates, never acts on the
148
+ * notification, and never reads the payload for display — `decide` is handed the
149
+ * raw, untrusted `content.data` and may answer nothing but `'show'` /
150
+ * `'suppress'`. Acting on a notification stays with a TAP, routed by
151
+ * {@link subscribeToNotificationResponses}. No notification actions/categories
152
+ * are registered here, so the banner cannot carry an action button.
153
+ *
154
+ * The one-shot latch is set BEFORE the first `await`, so concurrent callers
155
+ * cannot both reach `setNotificationHandler`.
156
+ *
157
+ * @param decide - Maps the raw, untrusted payload to a presentation verdict.
158
+ * Must not throw; a throw is reported by the OS as a handling error and the
159
+ * notification is dropped.
160
+ * @returns Whether a handler was installed by THIS call (`false` on a repeat
161
+ * call, on web, or when the native module is unavailable).
162
+ */
163
+ export declare function installForegroundNotificationHandler(decide: (data: unknown) => ForegroundPresentation): Promise<boolean>;
164
+ /**
165
+ * Subscribe to notification TAPS (responses) while the app is running.
166
+ *
167
+ * @param listener - Receives the raw, untrusted `content.data` of the tapped
168
+ * notification. Parsing/validation is the caller's job.
169
+ * @returns An unsubscribe function. Safe to call even if the subscription could
170
+ * not be established.
171
+ */
172
+ export declare function subscribeToNotificationResponses(listener: (data: unknown) => void): Promise<() => void>;
173
+ //# sourceMappingURL=deviceNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceNotifications.d.ts","sourceRoot":"","sources":["../../../../src/notifications/deviceNotifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4ErD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,GAAG,IAAI,CAE5D;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBlE;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC,CAuBtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0B/D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC,CA6BnE;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,CAAC;AAiBzD,kEAAkE;AAClE,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/D,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC5C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,sBAAsB,GAChD,OAAO,CAAC,OAAO,CAAC,CAsClB;AAED;;;;;;;GAOG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAChC,OAAO,CAAC,MAAM,IAAI,CAAC,CAkBrB"}
@@ -20,9 +20,11 @@
20
20
  * auto-starts the instant the view is reached, because the request surface
21
21
  * (a QR on an unknown desktop, "Check Commons on your phone" where Oxy could
22
22
  * deliver) IS the primary route there, never something behind a second tap.
23
- * - `qr` → `SignInRequestView` — the ACTIVE REQUEST: the route Oxy chose plus
24
- * honest progress derived only from `snapshot.signIn`. Alternatives stay
25
- * behind "Having trouble?" until the chosen route reports `routeFailed`.
23
+ * - `qr` → `SignInRequestView` — the ACTIVE REQUEST: the controller-bound
24
+ * wiring over the shared, presentational `OxySignInRequestSurface` (the same
25
+ * component the auth.oxy.so IdP mounts from its OAuth-bound request). It maps
26
+ * `snapshot.signIn` onto that surface's props; alternatives stay behind
27
+ * "Having trouble?" until the chosen route reports `routeFailed`.
26
28
  * - `signup` → `SignUpView` — account creation, Commons-first.
27
29
  *
28
30
  * Per-account color re-theming uses Bloom's `APP_COLOR_PRESETS` + `BloomColorScope`
@@ -1 +1 @@
1
- {"version":3,"file":"OxyAuthChooser.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyAuthChooser.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoC/B,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2UjD,CAAC;AA4BF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"OxyAuthChooser.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyAuthChooser.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoC/B,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0UjD,CAAC;AA4BF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * `OxySignInRequestSurface` — the in-flight "Sign in with Oxy" request, rendered
3
+ * from plain facts (issue #691, Phase 5).
4
+ *
5
+ * The user already performed their one action. From here the surface only
6
+ * REPORTS: the route-appropriate primary visual, the status line for the
7
+ * progress it was told about, and nothing else at the same weight. Alternatives
8
+ * stay behind "Having trouble?" until the chosen route could not be carried out,
9
+ * at which point they ARE the content and render plainly.
10
+ *
11
+ * PRESENTATIONAL AND HEADLESS-FRIENDLY. It owns no request, no controller, no
12
+ * polling, and no state of its own: everything it draws is a prop. That is what
13
+ * lets the two hosts of this surface share ONE implementation —
14
+ *
15
+ * - `OxyAuthChooser`'s `SignInRequestView`, driven by `AccountDialogController`'s
16
+ * device flow;
17
+ * - the auth.oxy.so IdP's OAuth-bound lane, whose request carries an OAuth
18
+ * binding the account dialog's session has no concept of.
19
+ *
20
+ * It resolves only what every `@oxyhq/services` consumer already has in context:
21
+ * the Bloom theme (`useTheme`) and the SDK's own locale dictionary (`useI18n`,
22
+ * the `accountSwitcher.*` copy in all 11 locales). Host-specific copy — the
23
+ * labels on {@link OxySignInRequestSurfaceProps.subordinate} and
24
+ * {@link OxySignInRequestSurfaceProps.alternatives} — arrives already localized.
25
+ *
26
+ * TWO THINGS IT DELIBERATELY DOES NOT DO:
27
+ * - it renders no failure REASON. A host surfaces that the way its own shell
28
+ * demands (the account dialog toasts it — errors never render inline there;
29
+ * a full page may show a banner around this surface). The surface only takes
30
+ * the fact that the request failed, and offers the way forward.
31
+ * - it derives nothing from {@link OxySignInRequestSurfaceProps.qrPayload}.
32
+ * Application identity, origin, and scopes are resolved server-side by the
33
+ * approver (Commons), never read out of a payload here — the plate encodes it
34
+ * and shows nothing about it.
35
+ *
36
+ * SECRETS: every prop is safe to render. There is no `sessionToken` (the secret
37
+ * claim/finalize credential), no bearer, and no authorization code — a host
38
+ * keeps those in its own controller, and no prop on this component invites one.
39
+ */
40
+ import type React from 'react';
41
+ import type { CommonsDeliveryRoute, SignInProgress } from '@oxyhq/core';
42
+ import type { OxySignInSurfaceAction } from './authChooser/types';
43
+ export interface OxySignInRequestSurfaceProps {
44
+ /**
45
+ * The ONE primary delivery route chosen for this request, or `null` while it
46
+ * is still being resolved. There is no chain: the surface renders exactly one
47
+ * route's visual, and never guesses one that has not been chosen yet.
48
+ */
49
+ route: CommonsDeliveryRoute | null;
50
+ /**
51
+ * The request's DERIVED progress — the only thing the status line is built
52
+ * from. It must come from a real observed signal (a server-reported delivery,
53
+ * an approver opening the request, an approval); the surface owns no clock and
54
+ * will never advance it on its own. `'idle'` means there is nothing honest to
55
+ * report, and renders no status line.
56
+ */
57
+ progress: SignInProgress;
58
+ /**
59
+ * The PUBLIC `oxycommons://approve?…` payload to encode as the QR, or `null`.
60
+ * It carries the single-use approval handle — never a secret credential — and
61
+ * the surface renders NOTHING derived from it.
62
+ */
63
+ qrPayload?: string | null;
64
+ /**
65
+ * `true` when the chosen primary route could not be carried out on this device.
66
+ * The one signal that reveals {@link alternatives} without the user asking;
67
+ * a host never silently cascades to another route on its own.
68
+ */
69
+ routeFailed?: boolean;
70
+ /**
71
+ * `true` when the request itself is terminally failed — there is no working
72
+ * primary route left to report on, so {@link onRetry} becomes the surface's one
73
+ * primary action and the alternatives render plainly.
74
+ */
75
+ failed?: boolean;
76
+ /**
77
+ * Start a BRAND-NEW request. Rendered as the primary action while
78
+ * {@link failed}; omit it when a fresh attempt cannot help (a request that
79
+ * would fail identically every time), leaving the alternatives as the only
80
+ * way forward.
81
+ */
82
+ onRetry?: () => void;
83
+ /**
84
+ * The acquisition action for a device where Commons is known to be ABSENT.
85
+ *
86
+ * Pass it ONLY on a positive "not installed" verdict. There, acquiring Commons
87
+ * is the GENUINE primary route — a same-device QR the user would have to scan
88
+ * with the very screen showing it is a dead end — so the surface leads with it
89
+ * and reports no route progress. Omit it wherever absence cannot be known (a
90
+ * browser cannot ask whether a URL scheme is registered).
91
+ */
92
+ onAcquireCommons?: () => void;
93
+ /**
94
+ * Subordinate links rendered directly beneath the primary, always visible:
95
+ * the ways OUT of the surface that are not troubleshooting (creating an
96
+ * account, cancelling the request).
97
+ */
98
+ subordinate?: readonly OxySignInSurfaceAction[];
99
+ /**
100
+ * The alternative ways to authenticate, kept behind "Having trouble?" until
101
+ * the user asks — or shown plainly once {@link failed} / {@link routeFailed}
102
+ * says the chosen route cannot deliver.
103
+ */
104
+ alternatives?: readonly OxySignInSurfaceAction[];
105
+ }
106
+ export declare const OxySignInRequestSurface: React.FC<OxySignInRequestSurfaceProps>;
107
+ export default OxySignInRequestSurface;
108
+ //# sourceMappingURL=OxySignInRequestSurface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OxySignInRequestSurface.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInRequestSurface.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAKlE,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAChD;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAClD;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CA8E1E,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignInEntryView.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/SignInEntryView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE5F,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2EnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SignInEntryView.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/SignInEntryView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,KAAK,EACV,sBAAsB,EAEtB,kBAAkB,EAClB,KAAK,EACL,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2EnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,29 +1,29 @@
1
1
  /**
2
- * The ACTIVE REQUEST surface (`qr` view) the route Oxy chose, plus honest
3
- * progress (issue #691, Phase 5).
2
+ * The ACTIVE REQUEST surface (`qr` view) as the account dialog drives it
3
+ * `AccountDialogController`'s device flow bound to the shared, presentational
4
+ * {@link OxySignInRequestSurface} (issue #691, Phase 5).
4
5
  *
5
- * The user already performed their one action. From here the surface only
6
- * REPORTS: the route-appropriate primary visual (`RequestPrimarySurface`), the
7
- * status line derived from the controller's real signals
8
- * (`signInProgressLabel`), and nothing else at the same weight. Alternatives
9
- * stay behind "Having trouble?" until `signIn.routeFailed` says the chosen route
10
- * could not be carried out — the controller never silently cascades, so
11
- * revealing them is this view's decision and this view's alone.
6
+ * This module owns WIRING only. Every pixel comes from the shared surface, which
7
+ * the auth.oxy.so IdP mounts from its own OAuth-bound request; there is one
8
+ * implementation of the request presentation, not two. What lives here is what
9
+ * only the account dialog knows:
12
10
  *
13
- * Two surfaces take over when there is no working primary route to report on:
14
- * - a FAILED request, whose reason is toasted by the container (never inline),
15
- * leaves "Try again" as the primary action with the alternatives revealed;
16
- * - a native device with NO Commons installed, where a same-device QR would be
17
- * a dead end. There, "Get Commons" is the genuine primary route not a
18
- * fallback so it renders as the one primary action and the QR handoff moves
19
- * behind the disclosure ("I have Commons on another device").
11
+ * - which of the controller's facts map onto the surface's props;
12
+ * - which alternatives are genuine ones for the CURRENT presentation (the
13
+ * passkey ceremony is pointless once the request is already being confirmed,
14
+ * and a QR link is redundant while the QR itself is the primary visual);
15
+ * - the one piece of local intent the controller has no opinion on: leaving the
16
+ * acquisition surface via "I have Commons on another device".
17
+ *
18
+ * Failures are NOT rendered here. The container toasts them at the point they
19
+ * arrive (owner mandate: no error renders inline inside the dialog); this view
20
+ * only reports that the request failed, so the surface can offer "Try again".
20
21
  */
21
22
  import type React from 'react';
22
23
  import type { AccountDialogSnapshot } from '@oxyhq/core';
23
- import type { SignInAlternatives, Theme, Translate } from './types';
24
+ import type { SignInAlternatives, Translate } from './types';
24
25
  interface SignInRequestViewProps {
25
26
  snapshot: AccountDialogSnapshot;
26
- theme: Theme;
27
27
  t: Translate;
28
28
  /** Restart the request after a failure. */
29
29
  onRetry: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"SignInRequestView.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/SignInRequestView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAMzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpE,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAqHvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"SignInRequestView.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/SignInRequestView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAA0B,kBAAkB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErF,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,CAAC,EAAE,SAAS,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA2FvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -18,17 +18,10 @@
18
18
  * copy of it here.
19
19
  */
20
20
  import type React from 'react';
21
- import type { Theme, Translate } from './types';
22
- /** One alternative route out of the current surface. Always a subordinate link. */
23
- export interface TroubleAction {
24
- /** Stable identity for the list, and the action's `testID`. */
25
- key: string;
26
- label: string;
27
- onPress: () => void;
28
- disabled?: boolean;
29
- }
21
+ import type { OxySignInSurfaceAction, Theme, Translate } from './types';
30
22
  interface TroubleDisclosureProps {
31
- actions: TroubleAction[];
23
+ /** The alternative routes out of the current surface. Always subordinate links. */
24
+ actions: readonly OxySignInSurfaceAction[];
32
25
  /**
33
26
  * `true` when the primary route could not be carried out (`signIn.routeFailed`)
34
27
  * or the surface has no working primary at all (a failed request). The
@@ -1 +1 @@
1
- {"version":3,"file":"TroubleDisclosure.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/TroubleDisclosure.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;CACd;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA8BvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"TroubleDisclosure.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/TroubleDisclosure.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAExE,UAAU,sBAAsB;IAC9B,mFAAmF;IACnF,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;CACd;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA8BvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import type React from 'react';
15
15
  import { MaterialCommunityIcons } from '@expo/vector-icons';
16
- import type { SignInFlowState } from '@oxyhq/core';
16
+ import type { CommonsDeliveryRoute, SignInProgress } from '@oxyhq/core';
17
17
  import type { Theme, Translate } from './types';
18
18
  /** The indeterminate leading visual: the request exists but has nothing to show yet. */
19
19
  export declare const PreparingSurface: React.FC;
@@ -44,10 +44,14 @@ export declare const GetCommonsPrompt: React.FC<{
44
44
  *
45
45
  * Ordered most-terminal-first, so a late-arriving route can never pull the
46
46
  * surface back from "confirming" to a QR the user has already scanned. Every
47
- * branch reads only controller facts — there is no local timeline.
47
+ * branch reads only the facts it is handed — there is no local timeline, and no
48
+ * dependency on WHICH kind of request produced them (the account dialog's device
49
+ * flow and the IdP's OAuth-bound lane both resolve the same three).
48
50
  */
49
51
  export declare const RequestPrimarySurface: React.FC<{
50
- signIn: SignInFlowState;
52
+ route: CommonsDeliveryRoute | null;
53
+ progress: SignInProgress;
54
+ qrPayload: string | null;
51
55
  theme: Theme;
52
56
  t: Translate;
53
57
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"requestSurfaces.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/requestSurfaces.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAShD,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAqD,CAAC;AAE3F,qFAAqF;AACrF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,OAAO,sBAAsB,CAAC,QAAQ,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;CACf,CAEA,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,CAa7E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAcA,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;CACd,CAmBA,CAAC"}
1
+ {"version":3,"file":"requestSurfaces.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/requestSurfaces.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAShD,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAqD,CAAC;AAE3F,qFAAqF;AACrF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,OAAO,sBAAsB,CAAC,QAAQ,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;CACf,CAEA,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,CAa7E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAcA,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;CACd,CAmBA,CAAC"}
@@ -10,6 +10,24 @@ import { type AppColorName, type useTheme } from '@oxyhq/bloom/theme';
10
10
  import type { useI18n } from '../../hooks/useI18n';
11
11
  export type Theme = ReturnType<typeof useTheme>;
12
12
  export type Translate = ReturnType<typeof useI18n>['t'];
13
+ /**
14
+ * One SUBORDINATE action on a sign-in surface — an alternative revealed behind
15
+ * "Having trouble?", or a non-competing link under the primary.
16
+ *
17
+ * Never a primary button: a sign-in surface presents exactly ONE of those (issue
18
+ * #691), and keeping every other affordance on this single shape is what stops
19
+ * one of them quietly growing into a co-equal button again.
20
+ *
21
+ * Part of the public SDK surface — `OxySignInRequestSurface` takes these.
22
+ */
23
+ export interface OxySignInSurfaceAction {
24
+ /** Stable identity for the list, and the action's `testID`. */
25
+ key: string;
26
+ /** Already-localized label. The host resolves its own copy. */
27
+ label: string;
28
+ onPress: () => void;
29
+ disabled?: boolean;
30
+ }
13
31
  /** The account-row actions the container wires for the switcher + menu views. */
14
32
  export interface OxyAuthChooserHandlers {
15
33
  onSwitch: (accountId: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAExD,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yFAAyF;AACzF,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,uEAAuE;IACvE,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,uCAAuC;IACvC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,SAAS,CAKvE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/authChooser/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yFAAyF;AACzF,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,uEAAuE;IACvE,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,uCAAuC;IACvC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,SAAS,CAKvE"}
@@ -56,6 +56,8 @@ export { handleAuthError, isInvalidSessionError, isTimeoutOrNetworkError, extrac
56
56
  export type { HandleAuthErrorOptions } from './ui/utils/errorHandlers.js';
57
57
  export { useFileFiltering } from './ui/hooks/useFileFiltering.js';
58
58
  export type { ViewMode, SortBy, SortOrder } from './ui/hooks/useFileFiltering.js';
59
+ export { pushTokenPlatform, hasNotificationPermission, requestNotificationPermission, getExpoPushToken, takeLaunchNotificationData, ensureNotificationChannel, installForegroundNotificationHandler, subscribeToNotificationResponses, } from './notifications/deviceNotifications.js';
60
+ export type { NotificationChannelImportance, NotificationChannelSpec, ForegroundPresentation } from './notifications/deviceNotifications.js';
59
61
  export { OXY_OAUTH_STATE_STORAGE_KEY, OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY, } from '@oxyhq/core';
60
62
  export { default as OxySignInButton } from './ui/components/OxySignInButton.js';
61
63
  export type { OxySignInButtonProps, OxyOAuthResult } from './ui/components/OxySignInButton.js';
@@ -79,6 +81,9 @@ export { default as ProfileButton } from './ui/components/ProfileButton.js';
79
81
  export type { ProfileButtonProps } from './ui/components/ProfileButton.js';
80
82
  export { default as OxyAuthChooser } from './ui/components/OxyAuthChooser.js';
81
83
  export type { OxyAuthChooserProps } from './ui/components/OxyAuthChooser.js';
84
+ export { OxySignInRequestSurface } from './ui/components/OxySignInRequestSurface.js';
85
+ export type { OxySignInRequestSurfaceProps } from './ui/components/OxySignInRequestSurface.js';
86
+ export type { OxySignInSurfaceAction } from './ui/components/authChooser/types.js';
82
87
  export { useSwitchableAccounts } from './ui/hooks/useSwitchableAccounts.js';
83
88
  export type { UseSwitchableAccountsResult } from './ui/hooks/useSwitchableAccounts.js';
84
89
  export { default as ProfileScreen } from './ui/screens/ProfileScreen.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}