@entropy-softworks/ui 2026.8.38 → 2026.8.39

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/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ are CalVer — `YYYY.M.D` of the publish date, with leading zeros dropped (npm's
7
7
  them), matching the `entropy-auth` crate. The `0.1.0` entry below predates the switch and was never
8
8
  published to npm.
9
9
 
10
+ ## 2026.8.39
11
+
12
+ ### Added
13
+
14
+ - `SocialConnections` takes `showEntropy` (default `true`), which drops the
15
+ first-party "Continue with Entropy" button from the row. Unlike the other
16
+ three, that one is not a staged-rollout placeholder waiting for its
17
+ connector: on Entropy Access's own sign-in surfaces it offers to sign in to
18
+ the identity provider with the identity provider, which is a button that can
19
+ never mean anything. A flag rather than inferring intent from a missing
20
+ `onEntropy`, because rendering an unhandled provider is deliberate here —
21
+ simple-finance renders the whole row with no handlers at all, and inference
22
+ would silently take that button away from it.
23
+
10
24
  ## 2026.8.35
11
25
 
12
26
  ### Fixed
@@ -11,6 +11,22 @@ export interface SocialConnectionsProps {
11
11
  * that configuration lands, while this one needs nothing but the IdP itself.
12
12
  */
13
13
  onEntropy?: () => void;
14
+ /**
15
+ * Whether to offer "Continue with Entropy" at all. Defaults to `true`.
16
+ *
17
+ * Unlike the other three, this one is not a staged-rollout item that can sit
18
+ * there unhandled until its connector lands. It either applies — the consumer
19
+ * is a relying party — or it is nonsense, which is the case on Entropy
20
+ * Access's own sign-in surfaces: offering to sign in to the identity provider
21
+ * with the identity provider is a button that can never mean anything.
22
+ *
23
+ * A flag rather than "render only when `onEntropy` is supplied", because
24
+ * rendering an unhandled provider is deliberate here — see the note on the
25
+ * component — and simple-finance renders the whole row with no handlers at
26
+ * all. Inferring intent from a missing handler would silently take that
27
+ * button away from consumers that want the placeholder.
28
+ */
29
+ showEntropy?: boolean;
14
30
  }
15
31
  /**
16
32
  * Button row for federated sign-in: Entropy / Apple / Google / Microsoft.
@@ -27,6 +43,6 @@ export interface SocialConnectionsProps {
27
43
  * reader announces. Without the tooltip these are four unlabelled squares, and
28
44
  * a user has to guess which mark is which.
29
45
  */
30
- export declare function SocialConnections({ onApple, onGoogle, onMicrosoft, onEntropy, }: SocialConnectionsProps): React.JSX.Element;
46
+ export declare function SocialConnections({ onApple, onGoogle, onMicrosoft, onEntropy, showEntropy, }: SocialConnectionsProps): React.JSX.Element;
31
47
  export default SocialConnections;
32
48
  //# sourceMappingURL=social-connections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"social-connections.d.ts","sourceRoot":"","sources":["../../src/components/social-connections.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAqBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,GACV,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsC5C;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"social-connections.d.ts","sourceRoot":"","sources":["../../src/components/social-connections.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAkB,GACnB,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwC5C;AAED,eAAe,iBAAiB,CAAC"}
@@ -28,7 +28,7 @@ const PROVIDERS = [
28
28
  * reader announces. Without the tooltip these are four unlabelled squares, and
29
29
  * a user has to guess which mark is which.
30
30
  */
31
- export function SocialConnections({ onApple, onGoogle, onMicrosoft, onEntropy, }) {
31
+ export function SocialConnections({ onApple, onGoogle, onMicrosoft, onEntropy, showEntropy = true, }) {
32
32
  const { colorScheme } = useColorScheme();
33
33
  const isDark = colorScheme === "dark";
34
34
  const handlers = {
@@ -38,19 +38,19 @@ export function SocialConnections({ onApple, onGoogle, onMicrosoft, onEntropy, }
38
38
  microsoft: onMicrosoft,
39
39
  };
40
40
  return (<View className="w-full flex-row items-center justify-center gap-3">
41
- {PROVIDERS.map(({ key, icon, label }) => (<Tooltip key={key} delayDuration={200}>
42
- <TooltipTrigger asChild>
43
- <Pressable onPress={handlers[key]} className="h-12 w-12 items-center justify-center rounded-lg border border-border dark:border-neutral-600 active:opacity-70" accessibilityRole="button" accessibilityLabel={`Continue with ${label}`}>
44
- {icon ? (<Ionicons name={icon} size={22} color={isDark ? "#FFFFFF" : "#000000"}/>) : (
41
+ {PROVIDERS.filter(({ key }) => key !== "entropy" || showEntropy).map(({ key, icon, label }) => (<Tooltip key={key} delayDuration={200}>
42
+ <TooltipTrigger asChild>
43
+ <Pressable onPress={handlers[key]} className="h-12 w-12 items-center justify-center rounded-lg border border-border dark:border-neutral-600 active:opacity-70" accessibilityRole="button" accessibilityLabel={`Continue with ${label}`}>
44
+ {icon ? (<Ionicons name={icon} size={22} color={isDark ? "#FFFFFF" : "#000000"}/>) : (
45
45
  // driftScale 0 collapses the echo offsets onto the mark. The
46
46
  // drift is a boot-animation effect and at 18px it just reads as
47
47
  // a smear, which next to three crisp brand glyphs looks like a
48
48
  // rendering fault rather than a logo.
49
49
  <EntropyMark size={20} driftScale={0}/>)}
50
- </Pressable>
51
- </TooltipTrigger>
52
- <TooltipContent>{`Continue with ${label}`}</TooltipContent>
53
- </Tooltip>))}
50
+ </Pressable>
51
+ </TooltipTrigger>
52
+ <TooltipContent>{`Continue with ${label}`}</TooltipContent>
53
+ </Tooltip>))}
54
54
  </View>);
55
55
  }
56
56
  export default SocialConnections;
@@ -1 +1 @@
1
- {"version":3,"file":"social-connections.jsx","sourceRoot":"","sources":["../../src/components/social-connections.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAyBpE,MAAM,SAAS,GAAwB;IACrC,0EAA0E;IAC1E,yEAAyE;IACzE,sDAAsD;IACtD,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;IACpD,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;IACvD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE;CACjE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,GACc;IACvB,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC;IAEtC,MAAM,QAAQ,GAAkD;QAC9D,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;KACvB,CAAC;IAEF,OAAO,CACL,CAAC,IAAI,CAAC,SAAS,CAAC,mDAAmD,CACjE;MAAA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACvC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CACpC;UAAA,CAAC,cAAc,CAAC,OAAO,CACrB;YAAA,CAAC,SAAS,CACR,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACvB,SAAS,CAAC,iHAAiH,CAC3H,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAE7C;cAAA,CAAC,IAAI,CAAC,CAAC,CAAC,CACN,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAG,CAC1E,CAAC,CAAC,CAAC;YACF,6DAA6D;YAC7D,gEAAgE;YAChE,+DAA+D;YAC/D,sCAAsC;YACtC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAG,CACzC,CACH;YAAA,EAAE,SAAS,CACb;UAAA,EAAE,cAAc,CAChB;UAAA,CAAC,cAAc,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,EAAE,cAAc,CAC5D;QAAA,EAAE,OAAO,CAAC,CACX,CAAC,CACJ;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"social-connections.jsx","sourceRoot":"","sources":["../../src/components/social-connections.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAyCpE,MAAM,SAAS,GAAwB;IACrC,0EAA0E;IAC1E,yEAAyE;IACzE,sDAAsD;IACtD,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;IACpD,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;IACvD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE;CACjE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAW,GAAG,IAAI,GACK;IACvB,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC;IAEtC,MAAM,QAAQ,GAAkD;QAC9D,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;KACvB,CAAC;IAEF,OAAO,CACL,CAAC,IAAI,CAAC,SAAS,CAAC,mDAAmD,CACjE;MAAA,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,CAAC,GAAG,CAClE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACxB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CACpC;YAAA,CAAC,cAAc,CAAC,OAAO,CACrB;cAAA,CAAC,SAAS,CACR,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACvB,SAAS,CAAC,iHAAiH,CAC3H,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAE7C;gBAAA,CAAC,IAAI,CAAC,CAAC,CAAC,CACN,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAG,CAC1E,CAAC,CAAC,CAAC;YACF,6DAA6D;YAC7D,gEAAgE;YAChE,+DAA+D;YAC/D,sCAAsC;YACtC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAG,CACzC,CACH;cAAA,EAAE,SAAS,CACb;YAAA,EAAE,cAAc,CAChB;YAAA,CAAC,cAAc,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,EAAE,cAAc,CAC5D;UAAA,EAAE,OAAO,CAAC,CACX,CACF,CACH;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entropy-softworks/ui",
3
- "version": "2026.8.38",
3
+ "version": "2026.8.39",
4
4
  "private": false,
5
5
  "description": "Shared React Native UI primitives, auth screens, hooks, and services for Entropy Softworks Expo apps",
6
6
  "license": "MIT",
@@ -17,6 +17,22 @@ export interface SocialConnectionsProps {
17
17
  * that configuration lands, while this one needs nothing but the IdP itself.
18
18
  */
19
19
  onEntropy?: () => void;
20
+ /**
21
+ * Whether to offer "Continue with Entropy" at all. Defaults to `true`.
22
+ *
23
+ * Unlike the other three, this one is not a staged-rollout item that can sit
24
+ * there unhandled until its connector lands. It either applies — the consumer
25
+ * is a relying party — or it is nonsense, which is the case on Entropy
26
+ * Access's own sign-in surfaces: offering to sign in to the identity provider
27
+ * with the identity provider is a button that can never mean anything.
28
+ *
29
+ * A flag rather than "render only when `onEntropy` is supplied", because
30
+ * rendering an unhandled provider is deliberate here — see the note on the
31
+ * component — and simple-finance renders the whole row with no handlers at
32
+ * all. Inferring intent from a missing handler would silently take that
33
+ * button away from consumers that want the placeholder.
34
+ */
35
+ showEntropy?: boolean;
20
36
  }
21
37
 
22
38
  type ProviderKey = "entropy" | "apple" | "google" | "microsoft";
@@ -58,6 +74,7 @@ export function SocialConnections({
58
74
  onGoogle,
59
75
  onMicrosoft,
60
76
  onEntropy,
77
+ showEntropy = true,
61
78
  }: SocialConnectionsProps): React.JSX.Element {
62
79
  const { colorScheme } = useColorScheme();
63
80
  const isDark = colorScheme === "dark";
@@ -71,29 +88,31 @@ export function SocialConnections({
71
88
 
72
89
  return (
73
90
  <View className="w-full flex-row items-center justify-center gap-3">
74
- {PROVIDERS.map(({ key, icon, label }) => (
75
- <Tooltip key={key} delayDuration={200}>
76
- <TooltipTrigger asChild>
77
- <Pressable
78
- onPress={handlers[key]}
79
- className="h-12 w-12 items-center justify-center rounded-lg border border-border dark:border-neutral-600 active:opacity-70"
80
- accessibilityRole="button"
81
- accessibilityLabel={`Continue with ${label}`}
82
- >
83
- {icon ? (
84
- <Ionicons name={icon} size={22} color={isDark ? "#FFFFFF" : "#000000"} />
85
- ) : (
86
- // driftScale 0 collapses the echo offsets onto the mark. The
87
- // drift is a boot-animation effect and at 18px it just reads as
88
- // a smear, which next to three crisp brand glyphs looks like a
89
- // rendering fault rather than a logo.
90
- <EntropyMark size={20} driftScale={0} />
91
- )}
92
- </Pressable>
93
- </TooltipTrigger>
94
- <TooltipContent>{`Continue with ${label}`}</TooltipContent>
95
- </Tooltip>
96
- ))}
91
+ {PROVIDERS.filter(({ key }) => key !== "entropy" || showEntropy).map(
92
+ ({ key, icon, label }) => (
93
+ <Tooltip key={key} delayDuration={200}>
94
+ <TooltipTrigger asChild>
95
+ <Pressable
96
+ onPress={handlers[key]}
97
+ className="h-12 w-12 items-center justify-center rounded-lg border border-border dark:border-neutral-600 active:opacity-70"
98
+ accessibilityRole="button"
99
+ accessibilityLabel={`Continue with ${label}`}
100
+ >
101
+ {icon ? (
102
+ <Ionicons name={icon} size={22} color={isDark ? "#FFFFFF" : "#000000"} />
103
+ ) : (
104
+ // driftScale 0 collapses the echo offsets onto the mark. The
105
+ // drift is a boot-animation effect and at 18px it just reads as
106
+ // a smear, which next to three crisp brand glyphs looks like a
107
+ // rendering fault rather than a logo.
108
+ <EntropyMark size={20} driftScale={0} />
109
+ )}
110
+ </Pressable>
111
+ </TooltipTrigger>
112
+ <TooltipContent>{`Continue with ${label}`}</TooltipContent>
113
+ </Tooltip>
114
+ )
115
+ )}
97
116
  </View>
98
117
  );
99
118
  }