@oxy.so/services 2.0.0 → 3.0.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/README.md CHANGED
@@ -523,6 +523,16 @@ function LoginScreen() {
523
523
  - **Official Oxy apps** (`isOfficial` / first-party types): opens the in-app account dialog.
524
524
  - **Third-party apps** (`type: 'third_party'`): starts the standard OAuth 2.0 Authorization Code + PKCE flow against `auth.oxy.so` (the SDK generates `state` + PKCE via `@oxy.so/core`). On web the transport is `OxyProvider` prop `webAuthMode: 'popup' | 'redirect'` (default `'popup'`; issue #691 Phases 2/7b) — `'popup'` opens a small window and relays the result via `postMessage` without navigating your app's tab, falling back to a redirect if the browser blocks it. Pass `oauthRedirectUri`; on native handle `onOAuthResult` to complete the token exchange.
525
525
 
526
+ The button is Bloom's `SocialButton brand="oxy"` (Bloom 2.1+), so it matches every other sign-in button in the app. It reads **"Sign in with Oxy"**, localized; `action` changes the verb and `variant` / `appearance` the look:
527
+
528
+ ```tsx
529
+ <OxySignInButton /> // Sign in with Oxy — outlined, Oxy mark
530
+ <OxySignInButton variant="contained" fullWidth /> // filled in the theme accent
531
+ <OxySignInButton action="signUp" /> // Sign up with Oxy
532
+ <OxySignInButton action="continue" appearance="black" />
533
+ <OxySignInButton iconOnly /> // circular, named "Sign in with Oxy"
534
+ ```
535
+
526
536
  See the [integration guide](../../docs/auth/integration-guide.md) for Console registration, OAuth endpoints, and backend verification, and [AUTHENTICATION.md](../../docs/AUTHENTICATION.md) for the full model.
527
537
 
528
538
  ### Documentation
@@ -9,12 +9,10 @@ var _reactNative = require("react-native");
9
9
  var _core = require("@oxy.so/core");
10
10
  var _authStore = require("../stores/authStore.js");
11
11
  var _shallow = require("zustand/react/shallow");
12
- var _theme = require("@oxy.so/bloom/theme");
13
- var _button = require("@oxy.so/bloom/button");
12
+ var _socialButton = require("@oxy.so/bloom/social-button");
14
13
  var _toast = require("@oxy.so/bloom/toast");
15
14
  var _OxyContext = require("../context/OxyContext.js");
16
15
  var _useI18n = require("../hooks/useI18n.js");
17
- var _LogoIcon = require("./logo/LogoIcon.js");
18
16
  var _accountDialogManager = require("../navigation/accountDialogManager.js");
19
17
  var _oauthNavigation = require("./oauthNavigation.js");
20
18
  var _oauthPopup = require("../oauth/oauthPopup.js");
@@ -26,6 +24,14 @@ var _jsxRuntime = require("react/jsx-runtime");
26
24
  * transport (`useOxy().startWebOAuthSignIn`) and never uses this callback.
27
25
  */
28
26
 
27
+ /** The label's verb: "Sign in with Oxy", "Continue with Oxy" or "Sign up with Oxy". */
28
+
29
+ const ACTION_KEYS = {
30
+ signIn: 'accountSwitcher.signInWithOxy',
31
+ continue: 'accountSwitcher.continueWithOxy',
32
+ signUp: 'accountSwitcher.signUpWithOxy'
33
+ };
34
+
29
35
  /**
30
36
  * A pre-styled button component for signing in with Oxy identity
31
37
  *
@@ -37,12 +43,11 @@ var _jsxRuntime = require("react/jsx-runtime");
37
43
  * // Basic usage
38
44
  * <OxySignInButton />
39
45
  *
40
- * // Custom styling
41
- * <OxySignInButton
42
- * variant="contained"
43
- * style={{ marginTop: 20 }}
44
- * text="Login with Oxy"
45
- * />
46
+ * // The filled button, full width
47
+ * <OxySignInButton variant="contained" fullWidth />
48
+ *
49
+ * // "Sign up with Oxy" on a registration screen
50
+ * <OxySignInButton action="signUp" />
46
51
  *
47
52
  * // Custom handler
48
53
  * <OxySignInButton onPress={() => {
@@ -52,6 +57,11 @@ var _jsxRuntime = require("react/jsx-runtime");
52
57
  */
53
58
  const OxySignInButton = ({
54
59
  variant = 'default',
60
+ appearance,
61
+ action = 'signIn',
62
+ size = 'medium',
63
+ fullWidth = false,
64
+ iconOnly = false,
55
65
  onPress,
56
66
  style,
57
67
  textStyle,
@@ -61,7 +71,6 @@ const OxySignInButton = ({
61
71
  oauthRedirectUri,
62
72
  onOAuthResult
63
73
  }) => {
64
- const theme = (0, _theme.useTheme)();
65
74
  const {
66
75
  t
67
76
  } = (0, _useI18n.useI18n)();
@@ -285,35 +294,27 @@ const OxySignInButton = ({
285
294
  if (isAuthenticated && !showWhenAuthenticated) return null;
286
295
  const isButtonDisabled = disabled || isLoading || isModalOpen;
287
296
 
288
- // Map the public `variant` API onto Bloom's Button variants:
289
- // contained → primary (filled), outline → outline, default → secondary.
290
- const buttonVariant = variant === 'contained' ? 'primary' : variant === 'outline' ? 'outline' : 'secondary';
291
-
292
- // The Oxy mark reads white-on-primary for the filled (contained) button and
293
- // primary-on-transparent for the outline / default surfaces.
294
- const isContained = variant === 'contained';
295
- const logoColor = isContained ? '#ffffff' : theme.colors.primary;
296
- const logoLetterColor = isContained ? theme.colors.primary : '#ffffff';
297
+ // `contained` is the filled button in the theme accent; `default` and
298
+ // `outline` are the outlined button carrying the Oxy mark.
299
+ const resolvedAppearance = appearance ?? (variant === 'contained' ? 'colorful' : 'white');
297
300
 
298
- // The relying party surfaces exactly ONE primary action, and it reads
299
- // "Continue with Oxy" (issue #691). A caller-supplied `text` still wins.
300
- const label = text ?? t('accountSwitcher.continueWithOxy');
301
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
302
- variant: buttonVariant,
301
+ // A key missing from every dictionary comes back as the key itself; fall
302
+ // back to Bloom's English phrase rather than render a dotted path.
303
+ const actionKey = ACTION_KEYS[action];
304
+ const translated = t(actionKey);
305
+ const label = text ?? (translated === actionKey ? (0, _socialButton.socialButtonLabel)('Oxy', action) : translated);
306
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_socialButton.SocialButton, {
307
+ brand: "oxy",
308
+ action: action,
309
+ appearance: resolvedAppearance,
310
+ size: size,
311
+ fullWidth: fullWidth,
312
+ iconOnly: iconOnly,
303
313
  onPress: handlePress,
304
314
  disabled: isButtonDisabled,
305
315
  style: style,
306
- textStyle: [_reactNative.Platform.OS === 'web' ? {
307
- fontWeight: '600'
308
- } : null, textStyle],
309
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LogoIcon.LogoIcon, {
310
- height: 20,
311
- color: logoColor,
312
- letterColor: logoLetterColor,
313
- style: {
314
- marginRight: 10
315
- }
316
- }),
316
+ textStyle: textStyle,
317
+ accessibilityLabel: iconOnly ? label : undefined,
317
318
  children: isLoading || isModalOpen ? t('signin.status.signingIn') : label
318
319
  });
319
320
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_core","_authStore","_shallow","_theme","_button","_toast","_OxyContext","_useI18n","_LogoIcon","_accountDialogManager","_oauthNavigation","_oauthPopup","_jsxRuntime","OxySignInButton","variant","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","theme","useTheme","t","useI18n","openAccountDialog","oxyServices","clientId","webAuthMode","startWebOAuthSignIn","useOxy","isAuthenticated","isLoading","useAuthStore","useShallow","state","isModalOpen","setIsModalOpen","useState","useEffect","subscribeToAccountDialog","appResolutionRef","useRef","routingRef","shouldPreOpenPopup","Platform","OS","Boolean","resolvePublicApplication","useCallback","cached","current","promise","getPublicApplication","catch","error","notifyNotConfigured","appName","toast","description","app","notifyFailed","startOfficialSignIn","startThirdPartyOAuth","popup","closeOAuthPopup","logger","undefined","component","application","name","result","redirectUri","status","warn","reason","pkce","Promise","all","generatePkcePair","generateOAuthState","authorizeUrl","buildOAuthAuthorizeUrl","codeChallenge","redirectUrl","openAuthorizeUrlNative","codeVerifier","routeSignIn","resolving","type","isOfficial","Error","String","handlePress","openOAuthPopup","isButtonDisabled","buttonVariant","isContained","logoColor","colors","primary","logoLetterColor","label","jsx","Button","fontWeight","icon","LogoIcon","height","color","letterColor","marginRight","children","exports","_default","default"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_core","_authStore","_shallow","_socialButton","_toast","_OxyContext","_useI18n","_accountDialogManager","_oauthNavigation","_oauthPopup","_jsxRuntime","ACTION_KEYS","signIn","continue","signUp","OxySignInButton","variant","appearance","action","size","fullWidth","iconOnly","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","t","useI18n","openAccountDialog","oxyServices","clientId","webAuthMode","startWebOAuthSignIn","useOxy","isAuthenticated","isLoading","useAuthStore","useShallow","state","isModalOpen","setIsModalOpen","useState","useEffect","subscribeToAccountDialog","appResolutionRef","useRef","routingRef","shouldPreOpenPopup","Platform","OS","Boolean","resolvePublicApplication","useCallback","cached","current","promise","getPublicApplication","catch","error","notifyNotConfigured","appName","toast","description","app","notifyFailed","startOfficialSignIn","startThirdPartyOAuth","popup","closeOAuthPopup","logger","undefined","component","application","name","result","redirectUri","status","warn","reason","pkce","Promise","all","generatePkcePair","generateOAuthState","authorizeUrl","buildOAuthAuthorizeUrl","codeChallenge","redirectUrl","openAuthorizeUrlNative","codeVerifier","routeSignIn","resolving","type","isOfficial","Error","String","handlePress","openOAuthPopup","isButtonDisabled","resolvedAppearance","actionKey","translated","label","socialButtonLabel","jsx","SocialButton","brand","accessibilityLabel","children","exports","_default","default"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,12 +5,10 @@ import { Platform } from 'react-native';
5
5
  import { logger, generatePkcePair, generateOAuthState, buildOAuthAuthorizeUrl } from '@oxy.so/core';
6
6
  import { useAuthStore } from "../stores/authStore.js";
7
7
  import { useShallow } from 'zustand/react/shallow';
8
- import { useTheme } from '@oxy.so/bloom/theme';
9
- import { Button } from '@oxy.so/bloom/button';
8
+ import { SocialButton, socialButtonLabel } from '@oxy.so/bloom/social-button';
10
9
  import { toast } from '@oxy.so/bloom/toast';
11
10
  import { useOxy } from "../context/OxyContext.js";
12
11
  import { useI18n } from "../hooks/useI18n.js";
13
- import { LogoIcon } from "./logo/LogoIcon.js";
14
12
  import { subscribeToAccountDialog } from "../navigation/accountDialogManager.js";
15
13
  import { openAuthorizeUrlNative } from "./oauthNavigation.js";
16
14
  import { closeOAuthPopup, openOAuthPopup } from "../oauth/oauthPopup.js";
@@ -21,7 +19,15 @@ import { closeOAuthPopup, openOAuthPopup } from "../oauth/oauthPopup.js";
21
19
  * (`POST /auth/oauth/token`). Web sign-in is handled entirely by the SDK's web
22
20
  * transport (`useOxy().startWebOAuthSignIn`) and never uses this callback.
23
21
  */
22
+
23
+ /** The label's verb: "Sign in with Oxy", "Continue with Oxy" or "Sign up with Oxy". */
24
24
  import { jsx as _jsx } from "react/jsx-runtime";
25
+ const ACTION_KEYS = {
26
+ signIn: 'accountSwitcher.signInWithOxy',
27
+ continue: 'accountSwitcher.continueWithOxy',
28
+ signUp: 'accountSwitcher.signUpWithOxy'
29
+ };
30
+
25
31
  /**
26
32
  * A pre-styled button component for signing in with Oxy identity
27
33
  *
@@ -33,12 +39,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
33
39
  * // Basic usage
34
40
  * <OxySignInButton />
35
41
  *
36
- * // Custom styling
37
- * <OxySignInButton
38
- * variant="contained"
39
- * style={{ marginTop: 20 }}
40
- * text="Login with Oxy"
41
- * />
42
+ * // The filled button, full width
43
+ * <OxySignInButton variant="contained" fullWidth />
44
+ *
45
+ * // "Sign up with Oxy" on a registration screen
46
+ * <OxySignInButton action="signUp" />
42
47
  *
43
48
  * // Custom handler
44
49
  * <OxySignInButton onPress={() => {
@@ -48,6 +53,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
48
53
  */
49
54
  export const OxySignInButton = ({
50
55
  variant = 'default',
56
+ appearance,
57
+ action = 'signIn',
58
+ size = 'medium',
59
+ fullWidth = false,
60
+ iconOnly = false,
51
61
  onPress,
52
62
  style,
53
63
  textStyle,
@@ -57,7 +67,6 @@ export const OxySignInButton = ({
57
67
  oauthRedirectUri,
58
68
  onOAuthResult
59
69
  }) => {
60
- const theme = useTheme();
61
70
  const {
62
71
  t
63
72
  } = useI18n();
@@ -281,35 +290,27 @@ export const OxySignInButton = ({
281
290
  if (isAuthenticated && !showWhenAuthenticated) return null;
282
291
  const isButtonDisabled = disabled || isLoading || isModalOpen;
283
292
 
284
- // Map the public `variant` API onto Bloom's Button variants:
285
- // contained → primary (filled), outline → outline, default → secondary.
286
- const buttonVariant = variant === 'contained' ? 'primary' : variant === 'outline' ? 'outline' : 'secondary';
287
-
288
- // The Oxy mark reads white-on-primary for the filled (contained) button and
289
- // primary-on-transparent for the outline / default surfaces.
290
- const isContained = variant === 'contained';
291
- const logoColor = isContained ? '#ffffff' : theme.colors.primary;
292
- const logoLetterColor = isContained ? theme.colors.primary : '#ffffff';
293
+ // `contained` is the filled button in the theme accent; `default` and
294
+ // `outline` are the outlined button carrying the Oxy mark.
295
+ const resolvedAppearance = appearance ?? (variant === 'contained' ? 'colorful' : 'white');
293
296
 
294
- // The relying party surfaces exactly ONE primary action, and it reads
295
- // "Continue with Oxy" (issue #691). A caller-supplied `text` still wins.
296
- const label = text ?? t('accountSwitcher.continueWithOxy');
297
- return /*#__PURE__*/_jsx(Button, {
298
- variant: buttonVariant,
297
+ // A key missing from every dictionary comes back as the key itself; fall
298
+ // back to Bloom's English phrase rather than render a dotted path.
299
+ const actionKey = ACTION_KEYS[action];
300
+ const translated = t(actionKey);
301
+ const label = text ?? (translated === actionKey ? socialButtonLabel('Oxy', action) : translated);
302
+ return /*#__PURE__*/_jsx(SocialButton, {
303
+ brand: "oxy",
304
+ action: action,
305
+ appearance: resolvedAppearance,
306
+ size: size,
307
+ fullWidth: fullWidth,
308
+ iconOnly: iconOnly,
299
309
  onPress: handlePress,
300
310
  disabled: isButtonDisabled,
301
311
  style: style,
302
- textStyle: [Platform.OS === 'web' ? {
303
- fontWeight: '600'
304
- } : null, textStyle],
305
- icon: /*#__PURE__*/_jsx(LogoIcon, {
306
- height: 20,
307
- color: logoColor,
308
- letterColor: logoLetterColor,
309
- style: {
310
- marginRight: 10
311
- }
312
- }),
312
+ textStyle: textStyle,
313
+ accessibilityLabel: iconOnly ? label : undefined,
313
314
  children: isLoading || isModalOpen ? t('signin.status.signingIn') : label
314
315
  });
315
316
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useState","useEffect","useRef","Platform","logger","generatePkcePair","generateOAuthState","buildOAuthAuthorizeUrl","useAuthStore","useShallow","useTheme","Button","toast","useOxy","useI18n","LogoIcon","subscribeToAccountDialog","openAuthorizeUrlNative","closeOAuthPopup","openOAuthPopup","jsx","_jsx","OxySignInButton","variant","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","theme","t","openAccountDialog","oxyServices","clientId","webAuthMode","startWebOAuthSignIn","isAuthenticated","isLoading","state","isModalOpen","setIsModalOpen","appResolutionRef","routingRef","shouldPreOpenPopup","OS","Boolean","resolvePublicApplication","cached","current","promise","getPublicApplication","catch","error","notifyNotConfigured","appName","description","app","notifyFailed","startOfficialSignIn","startThirdPartyOAuth","popup","undefined","component","application","name","result","redirectUri","status","warn","reason","pkce","Promise","all","authorizeUrl","codeChallenge","redirectUrl","codeVerifier","routeSignIn","resolving","type","isOfficial","Error","String","handlePress","isButtonDisabled","buttonVariant","isContained","logoColor","colors","primary","logoLetterColor","label","fontWeight","icon","height","color","letterColor","marginRight","children"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":";;AACA,SAASA,WAAW,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChE,SAAyDC,QAAQ,QAAQ,cAAc;AACvF,SACIC,MAAM,EACNC,gBAAgB,EAChBC,kBAAkB,EAClBC,sBAAsB,QAEnB,cAAc;AACrB,SAASC,YAAY,QAAQ,wBAAqB;AAClD,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,MAAM,QAA4B,sBAAsB;AACjE,SAASC,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,MAAM,QAAQ,0BAAuB;AAC9C,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,QAAQ,QAAQ,oBAAiB;AAC1C,SAASC,wBAAwB,QAAQ,uCAAoC;AAC7E,SAASC,sBAAsB,QAAQ,sBAAmB;AAC1D,SAASC,eAAe,EAAEC,cAAc,QAAQ,wBAAqB;;AAGrE;AACA;AACA;AACA;AACA;AACA;AALA,SAAAC,GAAA,IAAAC,IAAA;AA8FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAA+C,GAAGA,CAAC;EAC5DC,OAAO,GAAG,SAAS;EACnBC,OAAO;EACPC,KAAK;EACLC,SAAS;EACTC,IAAI;EACJC,QAAQ,GAAG,KAAK;EAChBC,qBAAqB,GAAG,KAAK;EAC7BC,gBAAgB;EAChBC;AACJ,CAAC,KAAK;EACF,MAAMC,KAAK,GAAGtB,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEuB;EAAE,CAAC,GAAGnB,OAAO,CAAC,CAAC;EACvB,MAAM;IAAEoB,iBAAiB;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,WAAW;IAAEC;EAAoB,CAAC,GAAGzB,MAAM,CAAC,CAAC;EAC/F,MAAM;IAAE0B,eAAe;IAAEC;EAAU,CAAC,GAAGhC,YAAY,CAC/CC,UAAU,CAAEgC,KAAK,KAAM;IAAEF,eAAe,EAAEE,KAAK,CAACF,eAAe;IAAEC,SAAS,EAAEC,KAAK,CAACD;EAAU,CAAC,CAAC,CAClG,CAAC;EACD;EACA;EACA;EACA,MAAM,CAACE,WAAW,EAAEC,cAAc,CAAC,GAAG3C,QAAQ,CAAC,KAAK,CAAC;EAErDC,SAAS,CAAC,MAAMe,wBAAwB,CAAC2B,cAAc,CAAC,EAAE,EAAE,CAAC;;EAE7D;EACA;EACA;EACA;EACA;EACA,MAAMC,gBAAgB,GAAG1C,MAAM,CAIrB,IAAI,CAAC;EACf;EACA;EACA;EACA,MAAM2C,UAAU,GAAG3C,MAAM,CAAC,KAAK,CAAC;EAChC;EACA;EACA;EACA;EACA,MAAM4C,kBAAkB,GACpB3C,QAAQ,CAAC4C,EAAE,KAAK,KAAK,IAAIV,WAAW,KAAK,OAAO,IAAIW,OAAO,CAAClB,gBAAgB,CAAC;EAEjF,MAAMmB,wBAAwB,GAAGlD,WAAW,CAAC,MAAyC;IAClF,IAAI,CAACqC,QAAQ,EAAE,OAAO,IAAI;IAC1B,MAAMc,MAAM,GAAGN,gBAAgB,CAACO,OAAO;IACvC,IAAID,MAAM,IAAIA,MAAM,CAACd,QAAQ,KAAKA,QAAQ,IAAIc,MAAM,CAACf,WAAW,KAAKA,WAAW,EAAE;MAC9E,OAAOe,MAAM,CAACE,OAAO;IACzB;IACA,MAAMA,OAAO,GAAGjB,WAAW,CAACkB,oBAAoB,CAACjB,QAAQ,CAAC,CAACkB,KAAK,CAAEC,KAAK,IAAK;MACxE;MACA;MACA,IAAIX,gBAAgB,CAACO,OAAO,EAAEC,OAAO,KAAKA,OAAO,EAAE;QAC/CR,gBAAgB,CAACO,OAAO,GAAG,IAAI;MACnC;MACA,MAAMI,KAAK;IACf,CAAC,CAAC;IACFX,gBAAgB,CAACO,OAAO,GAAG;MAAEf,QAAQ;MAAED,WAAW;MAAEiB;IAAQ,CAAC;IAC7D,OAAOA,OAAO;EAClB,CAAC,EAAE,CAAChB,QAAQ,EAAED,WAAW,CAAC,CAAC;;EAE3B;EACA;EACA;EACA;EACA,MAAMqB,mBAAmB,GAAGzD,WAAW,CAClC0D,OAAe,IAAK;IACjB7C,KAAK,CAAC2C,KAAK,CAACtB,CAAC,CAAC,6BAA6B,CAAC,EAAE;MAC1CyB,WAAW,EAAEzB,CAAC,CAAC,wCAAwC,EAAE;QAAE0B,GAAG,EAAEF;MAAQ,CAAC;IAC7E,CAAC,CAAC;EACN,CAAC,EACD,CAACxB,CAAC,CACN,CAAC;EACD,MAAM2B,YAAY,GAAG7D,WAAW,CAAC,MAAM;IACnCa,KAAK,CAAC2C,KAAK,CAACtB,CAAC,CAAC,sBAAsB,CAAC,EAAE;MACnCyB,WAAW,EAAEzB,CAAC,CAAC,iCAAiC;IACpD,CAAC,CAAC;EACN,CAAC,EAAE,CAACA,CAAC,CAAC,CAAC;;EAEP;EACA,MAAM4B,mBAAmB,GAAG9D,WAAW,CAAC,MAAM;IAC1CmC,iBAAiB,CAAC,QAAQ,CAAC;EAC/B,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;;EAEvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM4B,oBAAoB,GAAG/D,WAAW,CACpC,OAAO4D,GAAsB,EAAEI,KAA8B,KAAoB;IAC7E,IAAI,CAAC3B,QAAQ,EAAE;MACXlB,eAAe,CAAC6C,KAAK,CAAC;MACtBF,mBAAmB,CAAC,CAAC;MACrB;IACJ;IACA,IAAI,CAAC/B,gBAAgB,EAAE;MACnBZ,eAAe,CAAC6C,KAAK,CAAC;MACtB3D,MAAM,CAACmD,KAAK,CACR,0HAA0H,EAC1HS,SAAS,EACT;QAAEC,SAAS,EAAE,iBAAiB;QAAE7B,QAAQ;QAAE8B,WAAW,EAAEP,GAAG,CAACQ;MAAK,CACpE,CAAC;MACDX,mBAAmB,CAACG,GAAG,CAACQ,IAAI,CAAC;MAC7B;IACJ;IAEA,IAAIhE,QAAQ,CAAC4C,EAAE,KAAK,KAAK,EAAE;MACvB,MAAMqB,MAAM,GAAG,MAAM9B,mBAAmB,CAAC;QACrC+B,WAAW,EAAEvC,gBAAgB;QAC7B;QACA;QACA;QACA;QACA,IAAIgB,kBAAkB,GAAG;UAAEiB;QAAM,CAAC,GAAG,CAAC,CAAC;MAC3C,CAAC,CAAC;MACF,IAAIK,MAAM,CAACE,MAAM,KAAK,QAAQ,EAAE;QAC5BlE,MAAM,CAACmE,IAAI,CACP,wCAAwCH,MAAM,CAACI,MAAM,GAAG,EACxD;UAAEP,SAAS,EAAE,iBAAiB;UAAEC,WAAW,EAAEP,GAAG,CAACQ;QAAK,CAAC,EACvDC,MAAM,CAACV,WACX,CAAC;QACDE,YAAY,CAAC,CAAC;MAClB;MACA;IACJ;;IAEA;IACA;IACA,MAAM,CAACa,IAAI,EAAEhC,KAAK,CAAC,GAAG,MAAMiC,OAAO,CAACC,GAAG,CAAC,CAACtE,gBAAgB,CAAC,CAAC,EAAEC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACnF,MAAMsE,YAAY,GAAGrE,sBAAsB,CAAC;MACxC6B,QAAQ;MACRiC,WAAW,EAAEvC,gBAAgB;MAC7BW,KAAK;MACLoC,aAAa,EAAEJ,IAAI,CAACI;IACxB,CAAC,CAAC;IACF,MAAM;MAAEC;IAAY,CAAC,GAAG,MAAM7D,sBAAsB,CAAC2D,YAAY,EAAE9C,gBAAgB,CAAC;IACpF,IAAIC,aAAa,EAAE;MACfA,aAAa,CAAC;QAAE+C,WAAW;QAAErC,KAAK;QAAEsC,YAAY,EAAEN,IAAI,CAACM;MAAa,CAAC,CAAC;MACtE;IACJ;IACA3E,MAAM,CAACmE,IAAI,CACP,yLAAyL,EACzL;MAAEN,SAAS,EAAE,iBAAiB;MAAEC,WAAW,EAAEP,GAAG,CAACQ;IAAK,CAC1D,CAAC;IACDX,mBAAmB,CAACG,GAAG,CAACQ,IAAI,CAAC;EACjC,CAAC,EACD,CACI/B,QAAQ,EACRN,gBAAgB,EAChBC,aAAa,EACb8B,mBAAmB,EACnBvB,mBAAmB,EACnBQ,kBAAkB,EAClBU,mBAAmB,EACnBI,YAAY,CAEpB,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA,MAAMoB,WAAW,GAAGjF,WAAW,CAC3B,MAAOgE,KAA8B,IAAoB;IACrD,IAAIlB,UAAU,CAACM,OAAO,EAAE;MACpBjC,eAAe,CAAC6C,KAAK,CAAC;MACtB;IACJ;IACAlB,UAAU,CAACM,OAAO,GAAG,IAAI;IACzB,IAAI;MACA,MAAM8B,SAAS,GAAGhC,wBAAwB,CAAC,CAAC;MAC5C,IAAI,CAACgC,SAAS,EAAE;QACZ/D,eAAe,CAAC6C,KAAK,CAAC;QACtBF,mBAAmB,CAAC,CAAC;QACrB;MACJ;MACA,IAAIF,GAAsB;MAC1B,IAAI;QACAA,GAAG,GAAG,MAAMsB,SAAS;MACzB,CAAC,CAAC,OAAO1B,KAAK,EAAE;QACZrC,eAAe,CAAC6C,KAAK,CAAC;QACtB3D,MAAM,CAACmE,IAAI,CACP,qEAAqE,EACrE;UAAEN,SAAS,EAAE,iBAAiB;UAAE7B;QAAS,CAAC,EAC1CmB,KACJ,CAAC;QACDK,YAAY,CAAC,CAAC;QACd;MACJ;MACA,IAAID,GAAG,CAACuB,IAAI,KAAK,aAAa,IAAI,CAACvB,GAAG,CAACwB,UAAU,EAAE;QAC/C,MAAMrB,oBAAoB,CAACH,GAAG,EAAEI,KAAK,CAAC;QACtC;MACJ;MACA7C,eAAe,CAAC6C,KAAK,CAAC;MACtBF,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC,OAAON,KAAK,EAAE;MACZ;MACA;MACA;MACA;MACArC,eAAe,CAAC6C,KAAK,CAAC;MACtB3D,MAAM,CAACmD,KAAK,CACR,yDAAyD,EACzDA,KAAK,YAAY6B,KAAK,GAAG7B,KAAK,GAAG,IAAI6B,KAAK,CAACC,MAAM,CAAC9B,KAAK,CAAC,CAAC,EACzD;QAAEU,SAAS,EAAE,iBAAiB;QAAE7B;MAAS,CAC7C,CAAC;MACDwB,YAAY,CAAC,CAAC;IAClB,CAAC,SAAS;MACNf,UAAU,CAACM,OAAO,GAAG,KAAK;IAC9B;EACJ,CAAC,EACD,CACIF,wBAAwB,EACxBY,mBAAmB,EACnBC,oBAAoB,EACpB1B,QAAQ,EACRwB,YAAY,CAEpB,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA,MAAM0B,WAAW,GAAGvF,WAAW,CAAC,MAAM;IAClC,IAAIyB,OAAO,EAAE;MACTA,OAAO,CAAC,CAAC;MACT;IACJ;IACA,KAAKwD,WAAW,CAAClC,kBAAkB,GAAG3B,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC;EAClE,CAAC,EAAE,CAACK,OAAO,EAAEwD,WAAW,EAAElC,kBAAkB,CAAC,CAAC;;EAE9C;EACA,IAAIP,eAAe,IAAI,CAACV,qBAAqB,EAAE,OAAO,IAAI;EAE1D,MAAM0D,gBAAgB,GAAG3D,QAAQ,IAAIY,SAAS,IAAIE,WAAW;;EAE7D;EACA;EACA,MAAM8C,aAA4B,GAC9BjE,OAAO,KAAK,WAAW,GAAG,SAAS,GAAGA,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,WAAW;;EAEzF;EACA;EACA,MAAMkE,WAAW,GAAGlE,OAAO,KAAK,WAAW;EAC3C,MAAMmE,SAAS,GAAGD,WAAW,GAAG,SAAS,GAAGzD,KAAK,CAAC2D,MAAM,CAACC,OAAO;EAChE,MAAMC,eAAe,GAAGJ,WAAW,GAAGzD,KAAK,CAAC2D,MAAM,CAACC,OAAO,GAAG,SAAS;;EAEtE;EACA;EACA,MAAME,KAAK,GAAGnE,IAAI,IAAIM,CAAC,CAAC,iCAAiC,CAAC;EAE1D,oBACIZ,IAAA,CAACV,MAAM;IACHY,OAAO,EAAEiE,aAAc;IACvBhE,OAAO,EAAE8D,WAAY;IACrB1D,QAAQ,EAAE2D,gBAAiB;IAC3B9D,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAE,CAACvB,QAAQ,CAAC4C,EAAE,KAAK,KAAK,GAAG;MAAEgD,UAAU,EAAE;IAAM,CAAC,GAAG,IAAI,EAAErE,SAAS,CAAE;IAC7EsE,IAAI,eACA3E,IAAA,CAACN,QAAQ;MACLkF,MAAM,EAAE,EAAG;MACXC,KAAK,EAAER,SAAU;MACjBS,WAAW,EAAEN,eAAgB;MAC7BpE,KAAK,EAAE;QAAE2E,WAAW,EAAE;MAAG;IAAE,CAC9B,CACJ;IAAAC,QAAA,EAEA7D,SAAS,IAAIE,WAAW,GAAGT,CAAC,CAAC,yBAAyB,CAAC,GAAG6D;EAAK,CAC5D,CAAC;AAEjB,CAAC;AAED,eAAexE,eAAe","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useState","useEffect","useRef","Platform","logger","generatePkcePair","generateOAuthState","buildOAuthAuthorizeUrl","useAuthStore","useShallow","SocialButton","socialButtonLabel","toast","useOxy","useI18n","subscribeToAccountDialog","openAuthorizeUrlNative","closeOAuthPopup","openOAuthPopup","jsx","_jsx","ACTION_KEYS","signIn","continue","signUp","OxySignInButton","variant","appearance","action","size","fullWidth","iconOnly","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","t","openAccountDialog","oxyServices","clientId","webAuthMode","startWebOAuthSignIn","isAuthenticated","isLoading","state","isModalOpen","setIsModalOpen","appResolutionRef","routingRef","shouldPreOpenPopup","OS","Boolean","resolvePublicApplication","cached","current","promise","getPublicApplication","catch","error","notifyNotConfigured","appName","description","app","notifyFailed","startOfficialSignIn","startThirdPartyOAuth","popup","undefined","component","application","name","result","redirectUri","status","warn","reason","pkce","Promise","all","authorizeUrl","codeChallenge","redirectUrl","codeVerifier","routeSignIn","resolving","type","isOfficial","Error","String","handlePress","isButtonDisabled","resolvedAppearance","actionKey","translated","label","brand","accessibilityLabel","children"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type React from 'react';
2
2
  import { type ViewStyle, type TextStyle, type StyleProp } from 'react-native';
3
+ import { type SocialButtonAction, type SocialButtonAppearance, type SocialButtonSize } from '@oxy.so/bloom/social-button';
3
4
  /**
4
5
  * The OAuth handshake surfaced to a NATIVE third-party RP via
5
6
  * {@link OxySignInButtonProps.onOAuthResult} so it can finish the code exchange
@@ -14,12 +15,33 @@ export interface OxyOAuthResult {
14
15
  /** The PKCE `code_verifier` to replay on the token exchange. */
15
16
  codeVerifier: string;
16
17
  }
18
+ /** The label's verb: "Sign in with Oxy", "Continue with Oxy" or "Sign up with Oxy". */
19
+ export type OxySignInButtonAction = SocialButtonAction;
17
20
  export interface OxySignInButtonProps {
18
21
  /**
19
- * Controls the appearance of the button
22
+ * Shorthand for {@link OxySignInButtonProps.appearance}: `contained` is the
23
+ * filled button in the theme accent (`colorful`); `default` and `outline`
24
+ * are the outlined button with the Oxy mark (`white`).
20
25
  * @default 'default'
21
26
  */
22
27
  variant?: 'default' | 'outline' | 'contained';
28
+ /**
29
+ * Bloom `SocialButton` appearance — `colorful`, `white` or `black`. Wins
30
+ * over `variant` when both are given.
31
+ */
32
+ appearance?: SocialButtonAppearance;
33
+ /**
34
+ * The label's verb, localized: `signIn` — "Sign in with Oxy", `continue` —
35
+ * "Continue with Oxy", `signUp` — "Sign up with Oxy".
36
+ * @default 'signIn'
37
+ */
38
+ action?: OxySignInButtonAction;
39
+ /** `medium` (36 tall, 300 wide) or `small` (32 × 250). @default 'medium' */
40
+ size?: SocialButtonSize;
41
+ /** Fill the container's width instead of the fixed 300 / 250. */
42
+ fullWidth?: boolean;
43
+ /** A circular button showing only the Oxy mark; the label becomes its accessible name. */
44
+ iconOnly?: boolean;
23
45
  /**
24
46
  * Optional function to handle button press
25
47
  * If not provided, the button will use the showBottomSheet method from OxyContext
@@ -34,12 +56,10 @@ export interface OxySignInButtonProps {
34
56
  */
35
57
  textStyle?: StyleProp<TextStyle>;
36
58
  /**
37
- * Overrides the button label. When omitted the button renders the ONE
38
- * primary relying-party action, localized: `accountSwitcher.continueWithOxy`
39
- * ("Continue with Oxy" in English). "Sign in with Oxy" remains the name of
40
- * the MECHANISM — only this surface's label is "Continue with Oxy".
59
+ * Overrides the button label. When omitted the label is the localized
60
+ * {@link OxySignInButtonProps.action} phrase.
41
61
  *
42
- * @default localized `accountSwitcher.continueWithOxy`
62
+ * @default localized "Sign in with Oxy"
43
63
  */
44
64
  text?: string;
45
65
  /**
@@ -95,12 +115,11 @@ export interface OxySignInButtonProps {
95
115
  * // Basic usage
96
116
  * <OxySignInButton />
97
117
  *
98
- * // Custom styling
99
- * <OxySignInButton
100
- * variant="contained"
101
- * style={{ marginTop: 20 }}
102
- * text="Login with Oxy"
103
- * />
118
+ * // The filled button, full width
119
+ * <OxySignInButton variant="contained" fullWidth />
120
+ *
121
+ * // "Sign up with Oxy" on a registration screen
122
+ * <OxySignInButton action="signUp" />
104
123
  *
105
124
  * // Custom handler
106
125
  * <OxySignInButton onPress={() => {
@@ -1 +1 @@
1
- {"version":3,"file":"OxySignInButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;AAqBxF;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,sGAAsG;IACtG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAE9C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuR1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"OxySignInButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;AAUxF,OAAO,EAGH,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACxB,MAAM,6BAA6B,CAAC;AASrC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,sGAAsG;IACtG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,uFAAuF;AACvF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAE9C;;;OAGG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAEpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAE/B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqR1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type React from 'react';
2
2
  import { type ViewStyle, type TextStyle, type StyleProp } from 'react-native';
3
+ import { type SocialButtonAction, type SocialButtonAppearance, type SocialButtonSize } from '@oxy.so/bloom/social-button';
3
4
  /**
4
5
  * The OAuth handshake surfaced to a NATIVE third-party RP via
5
6
  * {@link OxySignInButtonProps.onOAuthResult} so it can finish the code exchange
@@ -14,12 +15,33 @@ export interface OxyOAuthResult {
14
15
  /** The PKCE `code_verifier` to replay on the token exchange. */
15
16
  codeVerifier: string;
16
17
  }
18
+ /** The label's verb: "Sign in with Oxy", "Continue with Oxy" or "Sign up with Oxy". */
19
+ export type OxySignInButtonAction = SocialButtonAction;
17
20
  export interface OxySignInButtonProps {
18
21
  /**
19
- * Controls the appearance of the button
22
+ * Shorthand for {@link OxySignInButtonProps.appearance}: `contained` is the
23
+ * filled button in the theme accent (`colorful`); `default` and `outline`
24
+ * are the outlined button with the Oxy mark (`white`).
20
25
  * @default 'default'
21
26
  */
22
27
  variant?: 'default' | 'outline' | 'contained';
28
+ /**
29
+ * Bloom `SocialButton` appearance — `colorful`, `white` or `black`. Wins
30
+ * over `variant` when both are given.
31
+ */
32
+ appearance?: SocialButtonAppearance;
33
+ /**
34
+ * The label's verb, localized: `signIn` — "Sign in with Oxy", `continue` —
35
+ * "Continue with Oxy", `signUp` — "Sign up with Oxy".
36
+ * @default 'signIn'
37
+ */
38
+ action?: OxySignInButtonAction;
39
+ /** `medium` (36 tall, 300 wide) or `small` (32 × 250). @default 'medium' */
40
+ size?: SocialButtonSize;
41
+ /** Fill the container's width instead of the fixed 300 / 250. */
42
+ fullWidth?: boolean;
43
+ /** A circular button showing only the Oxy mark; the label becomes its accessible name. */
44
+ iconOnly?: boolean;
23
45
  /**
24
46
  * Optional function to handle button press
25
47
  * If not provided, the button will use the showBottomSheet method from OxyContext
@@ -34,12 +56,10 @@ export interface OxySignInButtonProps {
34
56
  */
35
57
  textStyle?: StyleProp<TextStyle>;
36
58
  /**
37
- * Overrides the button label. When omitted the button renders the ONE
38
- * primary relying-party action, localized: `accountSwitcher.continueWithOxy`
39
- * ("Continue with Oxy" in English). "Sign in with Oxy" remains the name of
40
- * the MECHANISM — only this surface's label is "Continue with Oxy".
59
+ * Overrides the button label. When omitted the label is the localized
60
+ * {@link OxySignInButtonProps.action} phrase.
41
61
  *
42
- * @default localized `accountSwitcher.continueWithOxy`
62
+ * @default localized "Sign in with Oxy"
43
63
  */
44
64
  text?: string;
45
65
  /**
@@ -95,12 +115,11 @@ export interface OxySignInButtonProps {
95
115
  * // Basic usage
96
116
  * <OxySignInButton />
97
117
  *
98
- * // Custom styling
99
- * <OxySignInButton
100
- * variant="contained"
101
- * style={{ marginTop: 20 }}
102
- * text="Login with Oxy"
103
- * />
118
+ * // The filled button, full width
119
+ * <OxySignInButton variant="contained" fullWidth />
120
+ *
121
+ * // "Sign up with Oxy" on a registration screen
122
+ * <OxySignInButton action="signUp" />
104
123
  *
105
124
  * // Custom handler
106
125
  * <OxySignInButton onPress={() => {
@@ -1 +1 @@
1
- {"version":3,"file":"OxySignInButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;AAqBxF;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,sGAAsG;IACtG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAE9C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuR1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"OxySignInButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;AAUxF,OAAO,EAGH,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACxB,MAAM,6BAA6B,CAAC;AASrC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,sGAAsG;IACtG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,uFAAuF;AACvF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAE9C;;;OAGG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAEpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAE/B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqR1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/services",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "OxyHQ Expo/React Native SDK — UI components, screens, and native features",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -155,7 +155,7 @@
155
155
  },
156
156
  "dependencies": {
157
157
  "@expo/config-plugins": "57.0.9",
158
- "@oxy.so/contracts": "1.2.0",
158
+ "@oxy.so/contracts": "1.3.0",
159
159
  "@simplewebauthn/browser": "^13.3.0",
160
160
  "color": "^4.2.3"
161
161
  },
@@ -164,7 +164,7 @@
164
164
  "@commitlint/cli": "^21.2.1",
165
165
  "@commitlint/config-conventional": "^21.2.0",
166
166
  "@expo/vector-icons": "^15.0.3",
167
- "@oxy.so/core": "1.3.1",
167
+ "@oxy.so/core": "1.7.0",
168
168
  "@react-native-async-storage/async-storage": "^2.0.0",
169
169
  "@react-native-community/netinfo": "^12.0.1",
170
170
  "@react-native/babel-preset": "^0.86.2",
@@ -179,7 +179,7 @@
179
179
  "@types/jest": "^30.0.0",
180
180
  "@types/node": "^20.19.43",
181
181
  "@types/react": "*",
182
- "@oxy.so/bloom": "^2.0.0",
182
+ "@oxy.so/bloom": "^3.0.1",
183
183
  "copyfiles": "^2.4.1",
184
184
  "expo-constants": "~57.0.5",
185
185
  "expo-file-system": "~57.0.1",
@@ -212,10 +212,10 @@
212
212
  "typescript": "^5.9.2",
213
213
  "zustand": "^5.0.14"
214
214
  },
215
- "//@oxy.so/bloom": "RE-RAISE THIS FLOOR ON EVERY BREAKING BLOOM RELEASE, in the same commit as the root package.json catalog entry and the code that requires it. Bloom is now at or above 2.0.0, so the breaking position is the MAJOR and `^2.0.0` means `>=2.0.0 <3.0.0`: 2.x minors are admitted on semver's additive promise, and Bloom 3.0.0 is refused until someone raises this deliberately. The floor was raised from `^1.0.0` for Bloom 2.0.0, which removed every hand-drawn icon (now Remix `Ri*` names) and the `benefit-list` and `profile-card` subpaths this package imported. The CAP is the part that is load-bearing. An earlier revision of this key recorded the opposite trade -- an uncapped `>=` floor, accepted so that intentionally-breaking Bloom 0.x minors would not be blocked -- and that trade is now closed by evidence rather than by preference: an unbounded range is exactly what let `bun install` pair this package with Bloom 1.0.0 and emit no warning at all, and 1.0.0 broke it four ways (a deleted provider, a renamed confirm option, a renamed Chip fill, and two REMOVED SUBPATHS that fail at bundle time, before any typecheck runs). A floor is a claim about what was measured; a cap is the claim that nothing beyond it was.",
215
+ "//@oxy.so/bloom": "RE-RAISE THIS FLOOR ON EVERY BREAKING BLOOM RELEASE, in the same commit as the root package.json catalog entry and the code that requires it. The breaking position is the MAJOR, so `^3.0.1` means `>=3.0.1 <4.0.0`: 3.x minors are admitted on semver's additive promise, and Bloom 4.0.0 is refused until someone raises this deliberately. The CAP is the part that is load-bearing. An earlier revision of this key recorded the opposite trade -- an uncapped `>=` floor, accepted so that intentionally-breaking Bloom 0.x minors would not be blocked -- and that trade is closed by evidence rather than by preference: an unbounded range is exactly what let `bun install` pair this package with Bloom 1.0.0 and emit no warning at all, and 1.0.0 broke it four ways (a deleted provider, a renamed confirm option, a renamed Chip fill, and two REMOVED SUBPATHS that fail at bundle time, before any typecheck runs). A floor is a claim about what was measured; a cap is the claim that nothing beyond it was. RAISED TO 3.0.1 from `^2.1.0`. Bloom 3.0.0 breaks exactly two things -- `PageHeader` defaults to `presentation=\"floating\"` and stops hiding the title under `transparent`, and `Field disabled` now reaches the control that reads the field context -- and THIS PACKAGE IMPORTS NEITHER: it renders no `PageHeader` and no `Field`, and 3.0 removes no subpath (unlike 2.0.0, which is why that floor cost code changes and this one does not). Its six `transparent` occurrences are CSS colour values, not the PageHeader prop. The cap had to move rather than widen to a union, because leaving `^2.1.0` in place is what made `bun install` resolve a SECOND, nested Bloom 2.12.4 under this package for any app on Bloom 3 -- two copies of a library whose 3.0 contracts (`control-surface`, `TopEdgeProvider`, `ScrollOffsetProvider`) are React contexts, so a provider from one copy cannot be read by a consumer from the other. Mention's `oxyRuntimeCompatibility` test is what caught it; nothing in a typecheck can.",
216
216
  "peerDependencies": {
217
217
  "@expo/vector-icons": "^15.0.3",
218
- "@oxy.so/bloom": "^2.0.0",
218
+ "@oxy.so/bloom": "^3.0.1",
219
219
  "@oxy.so/core": "^1.0.1",
220
220
  "@react-native-async-storage/async-storage": "^2.0.0",
221
221
  "@react-native-community/netinfo": ">=11.4.1",
@@ -10,12 +10,16 @@ import {
10
10
  } from '@oxy.so/core';
11
11
  import { useAuthStore } from '../stores/authStore';
12
12
  import { useShallow } from 'zustand/react/shallow';
13
- import { useTheme } from '@oxy.so/bloom/theme';
14
- import { Button, type ButtonVariant } from '@oxy.so/bloom/button';
13
+ import {
14
+ SocialButton,
15
+ socialButtonLabel,
16
+ type SocialButtonAction,
17
+ type SocialButtonAppearance,
18
+ type SocialButtonSize,
19
+ } from '@oxy.so/bloom/social-button';
15
20
  import { toast } from '@oxy.so/bloom/toast';
16
21
  import { useOxy } from '../context/OxyContext';
17
22
  import { useI18n } from '../hooks/useI18n';
18
- import { LogoIcon } from './logo/LogoIcon';
19
23
  import { subscribeToAccountDialog } from '../navigation/accountDialogManager';
20
24
  import { openAuthorizeUrlNative } from './oauthNavigation';
21
25
  import { closeOAuthPopup, openOAuthPopup } from '../oauth/oauthPopup';
@@ -36,13 +40,40 @@ export interface OxyOAuthResult {
36
40
  codeVerifier: string;
37
41
  }
38
42
 
43
+ /** The label's verb: "Sign in with Oxy", "Continue with Oxy" or "Sign up with Oxy". */
44
+ export type OxySignInButtonAction = SocialButtonAction;
45
+
39
46
  export interface OxySignInButtonProps {
40
47
  /**
41
- * Controls the appearance of the button
48
+ * Shorthand for {@link OxySignInButtonProps.appearance}: `contained` is the
49
+ * filled button in the theme accent (`colorful`); `default` and `outline`
50
+ * are the outlined button with the Oxy mark (`white`).
42
51
  * @default 'default'
43
52
  */
44
53
  variant?: 'default' | 'outline' | 'contained';
45
54
 
55
+ /**
56
+ * Bloom `SocialButton` appearance — `colorful`, `white` or `black`. Wins
57
+ * over `variant` when both are given.
58
+ */
59
+ appearance?: SocialButtonAppearance;
60
+
61
+ /**
62
+ * The label's verb, localized: `signIn` — "Sign in with Oxy", `continue` —
63
+ * "Continue with Oxy", `signUp` — "Sign up with Oxy".
64
+ * @default 'signIn'
65
+ */
66
+ action?: OxySignInButtonAction;
67
+
68
+ /** `medium` (36 tall, 300 wide) or `small` (32 × 250). @default 'medium' */
69
+ size?: SocialButtonSize;
70
+
71
+ /** Fill the container's width instead of the fixed 300 / 250. */
72
+ fullWidth?: boolean;
73
+
74
+ /** A circular button showing only the Oxy mark; the label becomes its accessible name. */
75
+ iconOnly?: boolean;
76
+
46
77
  /**
47
78
  * Optional function to handle button press
48
79
  * If not provided, the button will use the showBottomSheet method from OxyContext
@@ -60,12 +91,10 @@ export interface OxySignInButtonProps {
60
91
  textStyle?: StyleProp<TextStyle>;
61
92
 
62
93
  /**
63
- * Overrides the button label. When omitted the button renders the ONE
64
- * primary relying-party action, localized: `accountSwitcher.continueWithOxy`
65
- * ("Continue with Oxy" in English). "Sign in with Oxy" remains the name of
66
- * the MECHANISM — only this surface's label is "Continue with Oxy".
94
+ * Overrides the button label. When omitted the label is the localized
95
+ * {@link OxySignInButtonProps.action} phrase.
67
96
  *
68
- * @default localized `accountSwitcher.continueWithOxy`
97
+ * @default localized "Sign in with Oxy"
69
98
  */
70
99
  text?: string;
71
100
 
@@ -115,6 +144,12 @@ export interface OxySignInButtonProps {
115
144
  onOAuthResult?: (result: OxyOAuthResult) => void;
116
145
  }
117
146
 
147
+ const ACTION_KEYS: Record<OxySignInButtonAction, string> = {
148
+ signIn: 'accountSwitcher.signInWithOxy',
149
+ continue: 'accountSwitcher.continueWithOxy',
150
+ signUp: 'accountSwitcher.signUpWithOxy',
151
+ };
152
+
118
153
  /**
119
154
  * A pre-styled button component for signing in with Oxy identity
120
155
  *
@@ -126,12 +161,11 @@ export interface OxySignInButtonProps {
126
161
  * // Basic usage
127
162
  * <OxySignInButton />
128
163
  *
129
- * // Custom styling
130
- * <OxySignInButton
131
- * variant="contained"
132
- * style={{ marginTop: 20 }}
133
- * text="Login with Oxy"
134
- * />
164
+ * // The filled button, full width
165
+ * <OxySignInButton variant="contained" fullWidth />
166
+ *
167
+ * // "Sign up with Oxy" on a registration screen
168
+ * <OxySignInButton action="signUp" />
135
169
  *
136
170
  * // Custom handler
137
171
  * <OxySignInButton onPress={() => {
@@ -141,6 +175,11 @@ export interface OxySignInButtonProps {
141
175
  */
142
176
  export const OxySignInButton: React.FC<OxySignInButtonProps> = ({
143
177
  variant = 'default',
178
+ appearance,
179
+ action = 'signIn',
180
+ size = 'medium',
181
+ fullWidth = false,
182
+ iconOnly = false,
144
183
  onPress,
145
184
  style,
146
185
  textStyle,
@@ -150,7 +189,6 @@ export const OxySignInButton: React.FC<OxySignInButtonProps> = ({
150
189
  oauthRedirectUri,
151
190
  onOAuthResult,
152
191
  }) => {
153
- const theme = useTheme();
154
192
  const { t } = useI18n();
155
193
  const { openAccountDialog, oxyServices, clientId, webAuthMode, startWebOAuthSignIn } = useOxy();
156
194
  const { isAuthenticated, isLoading } = useAuthStore(
@@ -384,39 +422,33 @@ export const OxySignInButton: React.FC<OxySignInButtonProps> = ({
384
422
 
385
423
  const isButtonDisabled = disabled || isLoading || isModalOpen;
386
424
 
387
- // Map the public `variant` API onto Bloom's Button variants:
388
- // contained → primary (filled), outline → outline, default → secondary.
389
- const buttonVariant: ButtonVariant =
390
- variant === 'contained' ? 'primary' : variant === 'outline' ? 'outline' : 'secondary';
425
+ // `contained` is the filled button in the theme accent; `default` and
426
+ // `outline` are the outlined button carrying the Oxy mark.
427
+ const resolvedAppearance: SocialButtonAppearance =
428
+ appearance ?? (variant === 'contained' ? 'colorful' : 'white');
391
429
 
392
- // The Oxy mark reads white-on-primary for the filled (contained) button and
393
- // primary-on-transparent for the outline / default surfaces.
394
- const isContained = variant === 'contained';
395
- const logoColor = isContained ? '#ffffff' : theme.colors.primary;
396
- const logoLetterColor = isContained ? theme.colors.primary : '#ffffff';
397
-
398
- // The relying party surfaces exactly ONE primary action, and it reads
399
- // "Continue with Oxy" (issue #691). A caller-supplied `text` still wins.
400
- const label = text ?? t('accountSwitcher.continueWithOxy');
430
+ // A key missing from every dictionary comes back as the key itself; fall
431
+ // back to Bloom's English phrase rather than render a dotted path.
432
+ const actionKey = ACTION_KEYS[action];
433
+ const translated = t(actionKey);
434
+ const label = text ?? (translated === actionKey ? socialButtonLabel('Oxy', action) : translated);
401
435
 
402
436
  return (
403
- <Button
404
- variant={buttonVariant}
437
+ <SocialButton
438
+ brand="oxy"
439
+ action={action}
440
+ appearance={resolvedAppearance}
441
+ size={size}
442
+ fullWidth={fullWidth}
443
+ iconOnly={iconOnly}
405
444
  onPress={handlePress}
406
445
  disabled={isButtonDisabled}
407
446
  style={style}
408
- textStyle={[Platform.OS === 'web' ? { fontWeight: '600' } : null, textStyle]}
409
- icon={
410
- <LogoIcon
411
- height={20}
412
- color={logoColor}
413
- letterColor={logoLetterColor}
414
- style={{ marginRight: 10 }}
415
- />
416
- }
447
+ textStyle={textStyle}
448
+ accessibilityLabel={iconOnly ? label : undefined}
417
449
  >
418
450
  {isLoading || isModalOpen ? t('signin.status.signingIn') : label}
419
- </Button>
451
+ </SocialButton>
420
452
  );
421
453
  };
422
454